我有两个名为shop和subapp_gallery的应用程序。基本上,subapp_gallery包含相册。。在我的商店应用程序中,我有我的网站主页。那么我如何从主页中的链接[指向每个相册的链接]重定向到subapp_gallery的相册路径。两个应用程序都在正常工作。提前谢谢。
-图像已放下
>shop_project
>>settings.py
>>urls.py
>shop
>>apps.py
>>models.py
>>urls.py
>>views.py
>subapp_gallery
>>apps.py
>>models.py
>>urls.py
>>views.py
这是商店应用程序中的urls.py文件>>
from django.urls import path
from . import views
urlpatterns = [
path('', views.shop, name='shop-home'),
path('about', views.about, name='shop-about'),
path('pricing', views.pricing, name='shop-pricing'),
]
这是subapp_gallery应用>>中的urls.py文件
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^(?P<topic_name>w+)/$', views.topic, name='topic'),
url(r'^(?P<topic_name>w+)/(?P<photo_id>[0-9]+)/$', views.detail, name='detail')
]
商店应用
subapp_gallery应用
这是个愚蠢的问题。只使用了"{%url"主题"%}",就成功了。django足够聪明,可以知道哪个名称来自哪个应用程序。
适用于任何需要此功能的人。如果你有两个应用程序,shop和sub_gallery,并且你需要shop.views.py中的一个视图来重定向到另一个应用程序的视图,下面是你可以做的:
假设:
1.重定向的视图称为redirect_view
2.此视图使用一个arg(int(
3.sub_gallery.url.py中的url名称为redirect_view:
#In shop.views.py:
from django.http import HttpResponseRedirect
from django.urls import reverse
....
#the view that redirects to sub_gallery app
def redirect_view(request):
return HttpResponseRedirect(reverse('sub_gallery:redirect_view',args=(1',))
#In shop.urls.py:
...
from sub_gallery.views import receiving_view
app_name='shop'
urlpatterns=[
...
path('redirect_view/<int:number>/',receiving_view,name='receiving_view'),
#In sub_gallery.urls.py:
app_name='sub_gallery'
...
urlpatterns=[
...
path('receiving_view/<int:number>/',views.receiving_view,name='receiving_view')
]
#In sub_gallery.views.py
....
from django.shortcuts import render
def receiving_view(request,number):
context={'dummy':number}
return render(request,'somefile.html',context)
请注意,我的目录结构是:
->商店
->sub_gallery
不是
->shop/sub_gallery
只要做一些修改就行了。使用DEBUG=False,您将看到重定向。
您正在寻找命名url模式
您可以使用reverse('<namespace>:<urlname>')
来获取要重定向到的url。