1. import os
    
  2. from functools import partial
    
  3. 
    
  4. from django.conf.urls.i18n import i18n_patterns
    
  5. from django.urls import include, path, re_path
    
  6. from django.utils.translation import gettext_lazy as _
    
  7. from django.views import defaults, i18n, static
    
  8. 
    
  9. from . import views
    
  10. 
    
  11. base_dir = os.path.dirname(os.path.abspath(__file__))
    
  12. media_dir = os.path.join(base_dir, "media")
    
  13. locale_dir = os.path.join(base_dir, "locale")
    
  14. 
    
  15. urlpatterns = [
    
  16.     path("", views.index_page),
    
  17.     # Default views
    
  18.     path("nonexistent_url/", partial(defaults.page_not_found, exception=None)),
    
  19.     path("server_error/", defaults.server_error),
    
  20.     # a view that raises an exception for the debug view
    
  21.     path("raises/", views.raises),
    
  22.     path("raises400/", views.raises400),
    
  23.     path("raises400_bad_request/", views.raises400_bad_request),
    
  24.     path("raises403/", views.raises403),
    
  25.     path("raises404/", views.raises404),
    
  26.     path("raises500/", views.raises500),
    
  27.     path("custom_reporter_class_view/", views.custom_reporter_class_view),
    
  28.     path("technical404/", views.technical404, name="my404"),
    
  29.     path("classbased404/", views.Http404View.as_view()),
    
  30.     path("classbased500/", views.Raises500View.as_view()),
    
  31.     # i18n views
    
  32.     path("i18n/", include("django.conf.urls.i18n")),
    
  33.     path("jsi18n/", i18n.JavaScriptCatalog.as_view(packages=["view_tests"])),
    
  34.     path("jsi18n/app1/", i18n.JavaScriptCatalog.as_view(packages=["view_tests.app1"])),
    
  35.     path("jsi18n/app2/", i18n.JavaScriptCatalog.as_view(packages=["view_tests.app2"])),
    
  36.     path("jsi18n/app5/", i18n.JavaScriptCatalog.as_view(packages=["view_tests.app5"])),
    
  37.     path(
    
  38.         "jsi18n_english_translation/",
    
  39.         i18n.JavaScriptCatalog.as_view(packages=["view_tests.app0"]),
    
  40.     ),
    
  41.     path(
    
  42.         "jsi18n_multi_packages1/",
    
  43.         i18n.JavaScriptCatalog.as_view(packages=["view_tests.app1", "view_tests.app2"]),
    
  44.     ),
    
  45.     path(
    
  46.         "jsi18n_multi_packages2/",
    
  47.         i18n.JavaScriptCatalog.as_view(packages=["view_tests.app3", "view_tests.app4"]),
    
  48.     ),
    
  49.     path(
    
  50.         "jsi18n_admin/",
    
  51.         i18n.JavaScriptCatalog.as_view(packages=["django.contrib.admin", "view_tests"]),
    
  52.     ),
    
  53.     path("jsi18n_template/", views.jsi18n),
    
  54.     path("jsi18n_multi_catalogs/", views.jsi18n_multi_catalogs),
    
  55.     path("jsoni18n/", i18n.JSONCatalog.as_view(packages=["view_tests"])),
    
  56.     # Static views
    
  57.     re_path(
    
  58.         r"^site_media/(?P<path>.*)$",
    
  59.         static.serve,
    
  60.         {"document_root": media_dir, "show_indexes": True},
    
  61.     ),
    
  62. ]
    
  63. 
    
  64. urlpatterns += i18n_patterns(
    
  65.     re_path(_(r"^translated/$"), views.index_page, name="i18n_prefixed"),
    
  66. )
    
  67. 
    
  68. urlpatterns += [
    
  69.     path(
    
  70.         "safestring_exception/",
    
  71.         views.safestring_in_template_exception,
    
  72.         name="safestring_exception",
    
  73.     ),
    
  74.     path("template_exception/", views.template_exception, name="template_exception"),
    
  75.     path(
    
  76.         "raises_template_does_not_exist/<path:path>",
    
  77.         views.raises_template_does_not_exist,
    
  78.         name="raises_template_does_not_exist",
    
  79.     ),
    
  80.     path("render_no_template/", views.render_no_template, name="render_no_template"),
    
  81.     re_path(
    
  82.         r"^test-setlang/(?P<parameter>[^/]+)/$",
    
  83.         views.with_parameter,
    
  84.         name="with_parameter",
    
  85.     ),
    
  86.     # Patterns to test the technical 404.
    
  87.     re_path(r"^regex-post/(?P<pk>[0-9]+)/$", views.index_page, name="regex-post"),
    
  88.     path("path-post/<int:pk>/", views.index_page, name="path-post"),
    
  89. ]