if you guys want the source here it is:

although if you just had emailed me to my mail account i might have
read this :p
i used pdf because it's sexy and colorful as opposed to the
following.


from django.conf.urls.defaults import *
urlpatterns = patterns('',
        # (regular exp, function, optional dictionary, optional name)
        # Doesn’t differentiate request method, all go to the same function
    (r'^articles/2003/$', 'news.views.special_case_2003'),
    # "/articles/2003" -> no match need "2003/"
    (r'^articles/(\d{4})/$', 'news.views.year_archive'),
    # ordering matters
        # "/articles/2003/" -> news.views.special_case_2003, not
news.views.year_archive(2003)
    (r'^articles/special/(?P<year>\d{4})/$',
'news.views.year_archive'),
        # "/articles/special/2003" -> news.views.year_archive(request,
year='2003')
    (r'^articles/(\d{4})/(\d{2})/$', 'news.views.month_archive'),
    (r'^articles/(\d{4})/(\d{2})/(\d+)/$',
'news.views.article_detail'),
    # "/articles/2003/03/3/" -> news.views.article_detail(request,
'2003', '03', '3')
)
urlpatterns += patterns('sports.views', # append like a list
        (r'^sports/2003/$', 'some_function'),
        # "/sports/2003/" -> sports.views.some_function(request)
)

# Generic actions are useful if you are doing something generic such
as:
# by default {'extra_context':{}}, add more context into extras if
necessary
urlpatterns += patterns('django.views.generic.simple',
    (r'^page_new/(?P<id>\d+)/$', 'direct_to_template', {'template':
'page_detail.html'}),)
urlpatterns += patterns('django.views.generic.simple',
    (r'^page/(?P<id>\d+)/$', 'redirect_to', {'url': '/page_new/%
(id)s/'}},)
urlpatterns += patterns('django.views.generic.list_detail',
    (r'^page/all/$', 'object_list', {'queryset':
Pages.objects.all() }),)
    # default: {'paginate_by':'infinity' , 'page':'1',
    #           'template_name':'app/model_list.html' }
urlpatterns += patterns('django.views.generic.list_detail',
    (r'^page/all/(?P<id>\d+)/$', 'object_detail', {'queryset':
Pages.objects.all(), 'object_id':id }),)
    # default: {'paginate_by':'infinity' , 'page':'1',
    #           'template_name':'app/model_detail.html' }
urlpatterns += patterns('django.views.generic.create_update',
    (r'^...$', 'create_object', {'model':SomeModel or
'form_class':SomeForm }),)
    # default: {'post_save_redirect':object.get_absolute_url(),
'login_required':False,
    #           'template_name':'app/model_form.html' }
urlpatterns += patterns('django.views.generic.create_update',
    (r'^...$', 'update_object', {'model': / 'form_class':,
'object_id':SomeID }),)
    # default: {'post_save_redirect':object.get_absolute_url(),
'login_required':False,
    #           'template_name':'app/model_form.html' }
urlpatterns += patterns('django.views.generic.create_update',
    (r'^...$', 'delete_object', {'model': / 'form_class':,
'object_id':SomeID }),)
    # default: {'post_save_redirect':object.get_absolute_url(),
'login_required':False,
    #           'template_name':'app/model_confirm_delete.html' }

# Parents are good for subdividing the work
urlpatterns += patterns('', # use include to add child url matchers:
    (r'^weblog/(?P<idName>\w+)/', include('mysite.app.url')),
)
# in file app/url.py:
from django.conf.urls.defaults import *
urlpatterns = patterns('app.views',
        (r'^$', 'blog.index'),
        # "/weblog/me/" -> app.views.blog.index(request, idName='me')
        (r'^post/(?P<postIndex>\d+)$', 'post.show'),
        # "/weblog/me/12" -> app.views.post.show(request, idName='me',
postIndex='12')
        (r'^details/$', 'blog.details', {'extraData', 'foo!'})
        # "/weblog/details/" -> app.views.blog.details(request, idName='me',
extraData='foo!')
        (r'^post/(?P<pid>\d+)/comment/(?P<cid>\d+)/$', 'post.show',
{'gotoComment', 'true'}, "weblog-viewComment"),
        # "/weblog/post/1/comment/1/" -> app.views.blog.details(request,
idName='me', pid='1', cid='1', gotoComment='true')
        # the template tag {% url weblog-viewComment pid=1,cid=1 %} returns "/
weblog/post/1/comment/1/"
)

# often you will write one function which has a default parameter to
save code:
urlpatterns = patterns('app.views',
        (r'^$', 'blog.index'),
        (r'^/(?P<postIndex>\d+)/$', 'blog.index'))
def index(request, postIndex='1')
        ....

# often we want to find a url that will execute a function with some
parameters
# we would use {% url function args %} in a template. in code we would
use:
from django.core.urlresolvers import reverse
reverse(viewname, urlconf=None, args=None, kwargs=None)
def myview(request):
    return HttpResponseRedirect(reverse('weblog-viewComment',
args='pid=1,cid=1'))

# regular reference:
# .      any char
# ^      start of string                $      end of string
# *      0 or more of preceding         +      1 or more of preceding
# ?      0 or 1 of preceding            (?!..) matches when it doesnt
match ..
# *?     0 or more, minimal match       +?     1 or more, minimal
match
# {m}    exactly m of preceding         {m,n}  between m to n of
preceding
# [..]   eg. [abc],[a-z],[0-9a-z]       [^..]  matches if doesn't
match [..]
# (..)   groups what's inside           (?=..) matches .. but doesn't
consume it
# \d     [0-9] (decimal digit)          \D     [^0-9] (non-digit)
# \w     [a-zA-Z0-9_] (alphanumeric)    \W     [^a-zA-Z0-9_] (non-
alphanumeric)
# \s     [ \t\n\r\f\v] (whitespace)     \S     [^ \t\n\r\f\v] (non-
whitespace)

# Request and Response Object
def index(request, index='1')
        request.path # /weblog/me/
        request.method # either 'GET', 'POST', 'HEAD', ...
        request.GET['someVarName'] # whatever it should be
        request.GET['someVarName', 'default'] # if it doesn't exist then
default. also for POST
        request.POST['someVarName']
        request.REQUEST['someName'] # searches GET then FILES
        request.COOKIES['attributeName']
        request.FILES['someFilename'] # request.POST does not have files
        # includes methods: read(num_bytes=...), chunk() and attrs:
file_name, file_size
        request.META['someMetaName']
                # includes: CONTENT_LENGTH, CONTENT_TYPE, HTTP_ACCEPT_ENCODING,
SERVER_PORT,
                # HTTP_ACCEPT_LANGUAGE, HTTP_HOST, HTTP_REFERER, 
HTTP_USER_AGENT,
                # QUERY_STRING, REMOTE_ADDR, REMOTE_HOST, REQUEST_METHOD,
SERVER_NAME,
        request.user # object: django.contrib.auth.models.User
        request.get_full_path() # includes any stuff after the last
directory /
        request.build_absolute_uri() # includes a http://www.. bit that is
read from their side
        request.is_ajax() # major ajax libraries send a signal that a query
is for ajax


On Aug 26, 5:56 am, maeck <[EMAIL PROTECTED]> wrote:
> I have printed this from scribd into a PDF and use it as such, no need
> for login.
> Works somewhat, cannot select the text from it (could have run some
> text recognition on it), but expect to find the original code or pdf
> somewhere soon (Google code maybe).
>
> maeck
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to