【问题标题】:Django URL routing for one app一个应用程序的 Django URL 路由
【发布时间】:2018-05-03 11:45:36
【问题描述】:

我正在尝试为不同的 url 返回不同的模板(只有一个应用程序),所以基本上我想返回:

一个模板用于:http://127.0.0.1:8000/projects/

另一个模板:http://127.0.0.1:8000/formpage/

我有项目 urls.py:

    from django.conf.urls import url,include
    from django.contrib import admin
    from appone import views

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        #home page
        url(r'^$', views.index, name='index'),
        url(r'^projects/', include('appone.urls')),
        url(r'^formpage/',  include('appone.urls')),
    ]

还有应用程序 urls.py:

    from django.conf.urls import url,include
    from django.http import HttpResponse
    from . import views

    urlpatterns = [
        url(r'^$', views.projs, name='proj'),
        url(r'^$', views.form_view, name='form_view')
    ]

我有视图和模板,很好,但我不明白如何根据 url 返回它们,因为目前我从 app urls.py 返回第一个视图,对于两个 url。

【问题讨论】:

    标签: python django django-urls


    【解决方案1】:

    为两个 url(projsform_view)创建单独的视图函数。

    然后在projects/urls.py

    urlpatterns = [
        ...
        url(r'^projects/', views.projs, name='proj'),
        url(r'^formpage/', views.form_view, name='form_view')
        ...
    ]`
    

    或者,如果您想拥有单独的urls.py 文件

    projects/urls.py

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        #home page
        url(r'^$', views.index, name='index'),
        url(r'^', include('appone.urls')),
    ]`
    

    appone/urls.py

    urlpatterns = [
        url(r'^projects/', views.projs, name='proj'),
        url(r'^formpage/', views.form_view, name='form_view')
    ]`
    

    【讨论】:

    • 感谢它的工作,它真的很有意义,我正在努力掌握 urls 路由的概念,而且我已经看到通常每个应用程序都有自己的 url,所以这就是我想使用包含在项目 urls.py 中。
    • 在这些正则表达式的末尾添加美元是个好主意 - r'^projects/$'r'^formpage/$'
    【解决方案2】:

    您真的需要第二个urls 页面吗?您可以将您的第一个 urls.py 设置为:

    from django.conf.urls import url,include
    from django.contrib import admin
    from appone import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        #home page
        url(r'^$', views.index, name='index'),
        url(r'^projects/', views.projs, name='proj'),
        url(r'^formpage/', views.form_view, name='form_view'),
    ]
    

    【讨论】:

    • 我同意口袋K;除非您因为它们做不同的事情而需要将它们分成不同的应用程序,否则您应该保持简单的 's'。
    猜你喜欢
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2021-04-02
    • 1970-01-01
    • 2015-05-26
    • 2021-10-01
    相关资源
    最近更新 更多