@@ -34,7 +34,38 @@ def maybe_xss(request):
3434 resp .write ("first name is " + first_name )
3535 return resp
3636
37- urlpatterns2 = [
37+ urlpatterns = [
3838 # Route to code_execution
3939 url (r'^maybe_xss$' , maybe_xss , name = 'maybe_xss' )
4040]
41+
42+
43+ # Non capturing group (we correctly identify page_number as a request parameter)
44+
45+ def show_articles (request , page_number = 1 ):
46+ return HttpResponse ('articles page: {}' .format (page_number ))
47+
48+ urlpatterns = [
49+ # one pattern to support `articles/page-<n>` and ensuring that articles/ goes to page-1
50+ url (r'articles/^(?:page-(?P<page_number>\d+)/)?$' , show_articles ),
51+ ]
52+
53+
54+ # Positional arguments
55+
56+ def xxs_positional_arg1 (request , arg0 ):
57+ return HttpResponse ('xxs_positional_arg1: {}' .format (arg0 ))
58+
59+ def xxs_positional_arg2 (request , arg0 , arg1 , arg2 ):
60+ return HttpResponse ('xxs_positional_arg2: {} {} {}' .format (arg0 , arg1 , arg2 ))
61+
62+ def xxs_positional_arg3 (request , arg0 , arg1 ):
63+ return HttpResponse ('xxs_positional_arg3: {} {}' .format (arg0 , arg1 ))
64+
65+ urlpatterns = [
66+ # passing as positional argument is not the recommended way of doing things,
67+ # but it is certainly possible
68+ url (r'^(.+)$' , xxs_positional_arg1 , name = 'xxs_positional_arg1' ),
69+ url (r'^([^/]+)/([^/]+)/([^/]+)$' , xxs_positional_arg2 , name = 'xxs_positional_arg2' ),
70+ url (r'^([^/]+)/(?:foo|bar)/([^/]+)$' , xxs_positional_arg3 , name = 'xxs_positional_arg3' ),
71+ ]
0 commit comments