Is it better to use path() or url() in urls.py for django 2.0?

后端 未结 6 1679
小蘑菇
小蘑菇 2020-11-28 02:24

In a django online course, the instructor has us use the url() function to call views and utilize regular expressions in the urlpatterns list. I\'ve seen other

相关标签:
6条回答
  • 2020-11-28 02:49

    From v2.0 many users are using path, but we can use either path or url. For example in django 2.1.1 mapping to functions through url can be done as follows

    from django.contrib import admin
    from django.urls import path
    
    from django.contrib.auth import login
    from posts.views import post_home
    from django.conf.urls import url
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        url(r'^posts/$', post_home, name='post_home'),
    
    ]
    

    where posts is an application & post_home is a function in views.py

    0 讨论(0)
  • 2020-11-28 02:57

    From Django documentation for url

    url(regex, view, kwargs=None, name=None) This function is an alias to django.urls.re_path(). It’s likely to be deprecated in a future release.

    Key difference between path and re_path is that path uses route without regex

    You can use re_path for complex regex calls and use just path for simpler lookups

    0 讨论(0)
  • 2020-11-28 02:58

    Regular expressions don't seem to work with the path() function with the following arguments: path(r'^$', views.index, name="index").

    It should be like this: path('', views.index, name="index").

    The 1st argument must be blank to enter a regular expression.

    0 讨论(0)
  • path is simply new in Django 2.0, which was only released a couple of weeks ago. Most tutorials won't have been updated for the new syntax.

    It was certainly supposed to be a simpler way of doing things; I wouldn't say that URL is more powerful though, you should be able to express patterns in either format.

    0 讨论(0)
  • Path is a new feature of Django 2.0. Explained here : https://docs.djangoproject.com/en/2.0/releases/2.0/#whats-new-2-0

    Look like more pythonic way, and enable to not use regular expression in argument you pass to view... you can ue int() function for exemple.

    0 讨论(0)
  • 2020-11-28 03:10

    The new django.urls.path() function allows a simpler, more readable URL routing syntax. For example, this example from previous Django releases:

    url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive)
    

    could be written as:

    path('articles/<int:year>/', views.year_archive)
    

    The django.conf.urls.url() function from previous versions is now available as django.urls.re_path(). The old location remains for backwards compatibility, without an imminent deprecation. The old django.conf.urls.include() function is now importable from django.urls so you can use:

    from django.urls import include, path, re_path
    

    in the URLconfs. For further reading django doc

    0 讨论(0)
提交回复
热议问题