Django - 从一个应用程序重定向到另一个应用程序的页面 Django



我有两个名为shopsubapp_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。

相关内容

最新更新