On Oct 13, 2:39 pm, bruno desthuilliers
<[EMAIL PROTECTED]> wrote:
> On 13 oct, 20:13, KillaBee <[EMAIL PROTECTED]>
> wrote:
>
>
>
> > I am want in to pass the user and a date, using the url. Like the
> > polls urls
> > (r'^(?P<poll_id>\d+)/$', 'intranet.timesheets.views.detail'),
>
> > I tried these, but I am missing a piece:
> > urlpatterns = patterns('',
> > (r'^timesheet/(?P<username>)/$',
> > 'intranet.timesheets.views.times'),
> > (r'^timesheet/(?P<username>\d{20})/$',
> > 'intranet.timesheets.views.times'),
> > (r'^timesheet/(?P<user>\d{20})/(?P<date>\d{10})/$',
> > 'intranet.timesheets.views.times'),
> > (r'^timesheet/(?P<user>\d{20})/$',
> > 'intranet.timesheets.views.times'),
> > (r'^(?P<poll_id>\d+)/$', 'intranet.timesheets.views.login'),
> > )
> > Is a understand it, P tells django that this is python code.
>
> Nope. It tells the Python standardlib's re module that this is a named
> group.
>
> http://docs.python.org/library/re.html#regular-expression-syntax
>
> When it comes to Django's url/dispatch system, a named group is passed
> to your view function as keyword argument (while unnamed groups are
> passed as positional arguments).
>
> > d is the number of chars,
>
> Wrong again. '\d' means 'any digit'.
>
> > but how does it know what user or date mean?
>
> It doesn't. urls are strings, matching subpatterns are strings, and
> all that get passed to your view function - except for the mandatory
> 'request' argument - is passed as a string.
>
> I *strongly* suggest you:
> 1/ carefully (re-)read Django's FineManual
> 2/ learn regexps (documented in Python's FineManual, cf url above)
>
> Trying anything that comes to mind in the hope it will magically start
> working is a well known antipattern named "programming by
> accident" (aka "programming by permutation,
> cfhttp://en.wikipedia.org/wiki/Programming_by_permutation).
>
> Back to your actual question. Your specification is not clear, but I
> assume you want to build an url that looks like (parts that need to be
> captured and passed to the view between <>):
>
> http://your.domain.tld/timesheet/<user_id>/<date>/
>
> the scheme and domain name not being of any interest here, we're left
> with:
>
> /timesheet/<user_id>/<date>/
>
> Now to build the correct regexp, we need to know:
> 1/ what's a user_id
> 2/ what's a date
>
> For a first example, we'll define
> 1/ 'user_id' as a sequence of digits of arbitrary length,
> and
> 2/ 'date' as a "yyyymmdd" formated date.
>
> The (minimal) corresponding regexps are resp.:
>
> 1/ r"\d+" (any numeric character 1 or more times)
>
> 2/ r"\d{4}\d{2}\d{2}" (any numeric character 4 times followed by any
> numeric character 2 times followed by any numeric character 2 times).
>
> Note that this last one is far from perfect, but we'll come back on
> this later. At least it will match a valid date.
>
> So our url pattern, once 'assembled', might look like this:
>
> r"^timesheet/\d+/\d{4}\d{2}\d{2}/$"
>
> Now we do want the user_id and date part to be _captured_, so they are
> passed as arguments to our view function. The simplest way would be to
> just surround them with parens, ie:
>
> r"^timesheet/(\d+)/(\d{4}\d{2}\d{2})/$"
>
> But doing so, they would be passed as positional arguments (ie : the
> first matching group as first argument, the second as second
> argument). The drawback is that if your customer decides he prefers "/
> timesheet/<date>/<user_id>/", then you not only have to modify your
> url pattern, but also your view function. Be sure that you'll forget
> the second modification and waste time debugging.
>
> So the solution is to use 'named groups', that Django will then pass
> as keyword arguments (cf
> http://docs.python.org/tutorial/controlflow.html#keyword-arguments).
>
> The regexp syntax for a named group is (?P<name>expression). In our
> case, this means:
>
> r"^timesheet/(?P<user_id>\d+)/(?P<date>\d{4}\d{2}\d{2})/$"
>
> One last point: the last part of the url pattern will indeed match a
> yyyymmdd date, but it will also match any arbitrary sequence of 8
> numeric characters - in fact, we could as well write it "(?P<date>
> \d{8})" (you should by now understand what this means).
>
> This is no big deal since, for invalid dates, you probably won't have
> any corresponding record in the database. But anyway : once you'll
> have read the corresponding documentation and experimented a bit by
> yourself (hint : Python comes with an interactive interpreter which is
> quite handy for Q&D tests and API exploration - so learn to use it),
> you should be able to write a better pattern here.
>
> HTH
I creted the url strucure like I want it ,and the user was add to the
url. How can I just display it on a page. I was thinking that I was
not login in cerrectlly, but only on the login can I use the auth
info. I want to display the user info and filter the db records with
it. If I could just display the username, I could do the rest. please
help.....
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---