我尝试将两个应用链接到一个网址。我找到了一个例子,其中可以使用“include”命令和每个应用程序的两个单独的“urls.py”。
所以,我尝试这样做,但它仍然只有一个应用程序在页面上工作...请帮助。
我的主要网址:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('joins.urls')),
url(r'^', include('item.urls')),
url(r'^items/get/(?P<item_id>\d+)$', 'item.views.item', name='item'),
url(r'^(?P<ref_id>.*)$', 'joins.views.share', name='share'),
)
我的第一个应用网址配置:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
url(r'^', 'joins.views.home', name='home'),
)
我的第二个应用网址配置:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
# Examples:
url(r'^', 'item.views.items', name='home'),
)
答案 0 :(得分:1)
不幸的是,你的整个方法都是错误的。视图完全负责响应URL并返回响应。谈论在一个URL上有两个视图是没有意义的。
如果您需要一个URL中的两个应用程序提供的功能,请考虑将共享功能抽象为实用程序方法,模板标记或上下文处理器。
答案 1 :(得分:0)
将美元符号添加到正则表达式:
url(r'^$', 'joins.views.home', name='home'),
如果没有$
^
正则表达式匹配所有网址。
当然item.views.items
无论如何都不会起作用(django会执行第一个匹配的网址),但来自item
应用的其他视图也可以正常使用。
答案 2 :(得分:0)
我想要这样的事情:
url(r'^joins/', include('joins.urls')),
url(r'^items/', include('item.urls')),
请参阅:https://docs.djangoproject.com/en/1.7/topics/http/urls/#including-other-urlconfs
@s_spirit你想要一个URL的两个视图?要做到这一点,写一个获取两个模型的视图,将两者都传递给渲染函数,并制作一个模板,显示你想要的每个模型。使两个网址相同只会做第一场比赛所做的事情 - joel goldstick 2小时前