Python 如何在django中正确地从一个应用重定向到另一个应用

Python 如何在django中正确地从一个应用重定向到另一个应用,python,django,redirect,url-pattern,Python,Django,Redirect,Url Pattern,我是Django的初学者,无法正确处理从一个应用程序到另一个应用程序的重定向。我有2个应用程序帐户,仪表板。帐户处理AuthUser的登录和注册。仪表板处理文件上载等其他功能 到目前为止,我已经成功地使用reverse()方法将/accounts/login重定向到我的上载页面,但它将/accounts/login重定向到/accounts/upload,而不是/dashboard/upload 项目URL urlpatterns=[ 路径('dashboard/',包括('dashboard.

我是Django的初学者,无法正确处理从一个应用程序到另一个应用程序的重定向。我有2个应用程序帐户,仪表板。帐户处理AuthUser的登录和注册。仪表板处理文件上载等其他功能

到目前为止,我已经成功地使用reverse()方法将/accounts/login重定向到我的上载页面,但它将/accounts/login重定向到/accounts/upload,而不是/dashboard/upload

项目URL

urlpatterns=[
路径('dashboard/',包括('dashboard.url'),
路径('accounts/',include('accounts.url'),
路径('admin/',admin.site.url),
]
帐户URL.py

urlpatterns=[
url('upload',DashboardViews.upload,name='upload'),
路径('login',views.login,name='login'),
路径('register',views.register,name='register'),
路径('logout',views.logout,name='logout')
]
帐户视图.py

def登录(请求):
如果request.method==“GET”:
返回呈现(请求'login.html')
如果request.method==“POST”:
user\u name=request.POST.get(“用户名”)
密码=request.POST.get(“密码”)
user=auth.authenticate(用户名=用户名,密码=密码)
如果用户不是无:
身份验证登录(请求、用户)
返回重定向(反向(“上载”))
其他:
打印('失败')
返回呈现(请求,'login')

我的意图是,无论何时用户(登录/注册),网页都应该从/account/login重定向到/dashboard/upload。

这是因为您的帐户的url模式中定义了uploadurl。
如果希望完整路径为/Dashboard/upload,而不是/accounts/upload,则应将其放置在仪表板应用程序的url.py文件中

为了进一步解释,当您使用include函数定义路径时,如下所示:

path(“accounts/”,include(“accounts.url”)
Accounts应用程序中的所有URL将在开头追加“Accounts/”

注意:如果将名称参数添加到路径,则可以在所有应用程序中使用反向功能。路径不必在要调用反向功能的同一应用程序中声明


避免url冲突的一个好方法是将应用程序的名称添加到url中。因此,您可能应该将上传路径命名为仪表板\u上传,我遇到了同样的问题,但下面的技术对我有效


Dashboard
应用程序的
url.py
文件中,使用
app\u name=“Dashboard”
。然后在
redirect()
函数中使用appName:Path结构。例如,使用
redirect('Dashboard:upload')
这是我的Dashboard\url.py
urlpatterns=[Path('upload',views.upload,name='upload')),路径('reports',views.reports,name='reports')]
我更新了我的答案,你应该从你的帐户应用中删除上载url,因为它们具有相同的名称,这会导致冲突。当你使用“反向”时,它会搜索具有该名称的第一个url。非常感谢你解决了这个问题。我从Accounts url.py文件中删除了上载路径。