Best way of linking to a page in Django

前端 未结 5 2173
臣服心动
臣服心动 2021-02-08 20:02

I managed to create a URL tag for my index. But right now I\'m confused how to add links to other pages.

I put this on my urls.py

url(r\         


        
相关标签:
5条回答
  • 2021-02-08 20:34

    Django has updated urlpatterns to take 'path' instead of using url so it's become much more efficient. You don't have to use regex anymore

    from django.urls import path
    from . import views
    
    urlpatterns=[
        path('', views.index , name='index'),
        path('blog/', views.blog , name='blog'),]
    

    Then in templates, you can use template tagging

    <a href="{% url 'index' %}">Index</a>
    <a href="{% url 'blog' %}">Blog</a>
    

    If you have multiple apps, you can tag it as follows. For example, if this is under 'post' app:

    In post app urls.py:

    from django.urls import path
    from . import views
    
    app_name = 'post'
    urlpatterns=[
        path('', views.index , name='index'),
        path('blog/', views.blog , name='blog'),]
    

    in the project urls.py:

    from django.urls import path, include
    
    urlpatterns=[
    path('post/', include('post.urls'),]
    

    In templates, you do as following:

    <a href="{% url 'post:index' %}">Index</a>
    <a href="{% url 'post:blog' %}">Blog</a>
    
    0 讨论(0)
  • 2021-02-08 20:38

    Just use the same label {% url 'index' %}. You may use each name in urls.py to link to the url.

    urls.py

    url(r'^archive/$', 'mysite.views.archive',name='archive'),
    url(r'^about/$', 'mysite.views.about',name='about'),
    url(r'^contact/$', 'mysite.views.contact',name='contact'),
    

    template

    <a href="{% url 'about' %}">About</a>
    <a href="{% url 'contact' %}">Contact</a>
    

    If you have many apps, use namespace https://docs.djangoproject.com/en/dev/topics/http/urls/#url-namespaces-and-included-urlconfs

    0 讨论(0)
  • 2021-02-08 20:43

    Create a new URL in the same format and give that name instead of index.

    Eg:

    url(r'^$', 'index', name='index'),
    url(r'^new/page/$', 'new', name='new_page'),
    
    {% url 'new_page' %}
    
    0 讨论(0)
  • 2021-02-08 20:56

    So next you would extend your urls.py to look something like this:

    url(r'^$', 'index', name='index'),
    url(r'^blog$', 'blog', name='blog'),
    

    Then in your html you can use either one:

    <a href="{% url 'index' %}">Home</a>
    <a href="{% url 'blog' %}">Blog</a>
    

    You can of course use the template tage {% url 'index' %} as many times as you need in any template.

    0 讨论(0)
  • 2021-02-08 20:57

    Example:

    urlpatterns = patterns('',
                           url(r'^$', views.index, name='index'),
                           url(r'^about/$', views.about', name='about'),
    )
    

    Now, in the html template rendered by your views.index you can have:

    <a href ="{% url 'about' %}">about</a>
    
    0 讨论(0)
提交回复
热议问题