Django中一个URL中的两个应用程序

时间:2015-03-23 11:16:45

标签: python django django-urls django-apps

我尝试将两个应用链接到一个网址。我找到了一个例子,其中可以使用“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'),
)

3 个答案:

答案 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小时前