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 [email protected]
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
-~----------~----~----~----~------~----~------~--~---