django urls文件中的路径设置困难[关闭]

Posted

技术标签:

【中文标题】django urls文件中的路径设置困难[关闭]【英文标题】:path setting difficulty in djnago urls file [closed] 【发布时间】:2020-06-29 21:54:52 【问题描述】:

MyProject urls.py 文件

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('HappyHomes/', include('HappyHomes.urls')),
    path('HappyHomesAdmin/', include('HappyHomesAdmin.urls')),
]

HappyHomes urls.py 文件

from django.urls import path
from HappyHomes import views

app_name = "HappyHomes"

urlpatterns = [
    path('index/', views.index),
    path('login/', views.login),
    path('logincheck/', views.logincheck),
    path('logout/', views.logout),
    path('registration/', views.registration),
    path('reg/', views.reg),
    path('profile/', views.profile),
    path('edit_profile/', views.edit_profile),
    path('pg_hostel_showall/', views.pg_hostel_showall),
    path('pg_hostel/', views.pg_hostel),
    path('pg_hostel_booking/', views.pg_hostel_booking),
]

HappyHomesAdmin urls.py 文件

from django.urls import path
from HappyHomesAdmin import views

app_name = "HappyHomesAdmin"

urlpatterns = [
    path('index/', views.index, name="home"),
    path('addnew/', views.addnew),
]

HappyHomes 应用程序的 views.py 文件

def registration(request):
    return render(request, 'registration.html')

def reg(request):
    return HttpResponseRedirect(reverse('HappyHomesAdmin:home'))

此外,还有更多功能。他们都没有工作。我必须在 URL 中手动编写所有内容。

现在,如果我试图以这种方式在浏览器中从 MyProject 跳转到 HappyHomes,http://127.0.0.1:8000/HappyHomes/ 它不会向我显示 HappyHomes urls 文件的功能。它向我展示了相同的结果。有 2 个应用程序和 1 个管理站点。 所以如果我写 http://127.0.0.1:8000http://127.0.0.1:8000/HappyHomes 没有区别,因为它显示相同的结果。我不知道如何解决这个问题。

【问题讨论】:

我已经编辑了我的问题并进行了更改,以便每个人都能清楚地了解它。有人可以请重新打开我的问题。 【参考方案1】:

在与你的项目同名的文件夹中,我认为是 MyProject,在 urls.py 中你需要设置一个路径,如下所示

在您项目的 urls.py 中:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('', include('main.urls')),
    path('app1/', include('app1.urls')),
    path('app2/', include('app2.urls')),
    path('app3/', include('app3.urls')),
    path('admin/', admin.site.urls),
]

您必须在应用的 urls.py 文件中定义您的应用名称,例如:

from django.urls import path
from . import views

app_name = "app1" #example

urlpatterns = [...]

在一个应用的views.py中,例如app2,你可以:

from django.shortcuts import HttpResponseRedirect, reverse
    def example(request):
        return HttpResponseRedirect(reverse('app1:home'))

【讨论】:

您好,感谢您的回复。所以会有3个url文件对吗?第一个将在项目本身中,其他两个将在应用程序文件夹中,对吗?我也可以知道如何在 MyProject 的 urls 文件中设置应用程序的路径吗? 是的,每个应用程序都会有一个 url.py 文件 + 项目本身的 url.py。我将编辑我的 anwser 以显示如何为您的应用设置路径:) 是的。我以同样的方式做到了,但我在 MyProject 的主 urls 文件的path('', include('main.urls')), 行中遇到错误 当我启动服务器时,我可以看到像这样的http://127.0.0.1:8000/,我的应用名称为 HappyHomes 和 HappyHomesAdminadmin。当我这样写http://127.0.0.1:8000/HappyHomes 并尝试跳转到 HappyHomes 的文件时,我仍然得到相同的结果。我没有看到我在 HappyHomes 的 urls 文件中声明的 HappyHomes 应用程序的任何路径文件。虽然我得到了这个当前的路径,HappyHomes,与其中任何一个都不匹配。我在路径上犯了一些错误,但不知道在哪里。 我解决了这个问题。实际上,当我重定向时,错误出现在 html 文件中。而不是写这个href="/HappyHomes/index/",我是这样写的。 href="/index/" 这就是它没有重定向的原因。

以上是关于django urls文件中的路径设置困难[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Django之反向生成url

Django 中的static文件的设置

django-文件上传Media url的配置

Django - 引用模板中的静态文件

调整 Django URL 中的正则表达式以匹配文件路径

django 改了静态文件但是页面没有变