如何在django中将URLMap到视图?

shstlldc  于 2022-11-18  发布在  Go
关注(0)|答案(2)|浏览(146)

目的:

127.0.0.1:8000/about

应给予:
欢迎访问关于我们页面

127.0.0.1:8000/contact

应给予:
欢迎访问联系页面
问题:
页面未找到页面未找到
此错误:
https://imgur.com/a/P0uWhWl
这是我的文件夹结构:
https://imgur.com/a/84uc5Pw
这是我的主要项目“taskmate”的urls.py:

from django.contrib import admin

from django.urls import path, include


urlpatterns = [

    path('admin/', admin.site.urls),

    path('task/',include('todolist_app.urls')),

    path('todolist/',include('todolist_app.urls')),        

       
    ]

对于todolist_app,以下是我的详细信息:
网址.py:

from django.urls import path

from todolist_app import views

#from . import views    


urlpatterns = [

    path('', views.todolist),

    path('contact', views.contact,name='contact'),

    path('about', views.about, name="about"), #the path can be anything.

]

查看次数.py:

from django.shortcuts import render

from django.http import HttpResponse


# Create your views here.

def todolist(request):

    context={'welcome_text':"welcome to todo list app"}

    return render(request, 'html/todolist.html',context)


def contact(request):

    context={'welcome_text':"welcome to contact page"}

    return render(request, 'html/contact.html',context)


def about(request):

    context={'welcome_text':"welcome to to about us page"}

    return render(request, 'html/about.html',context)

我怀疑问题出在我的主项目www.example.com上urls.py因为我没有在那里包含任何关于联系人和URL的细节。

from django.contrib import admin

from django.urls import path, include


urlpatterns = [   

    path('admin/', admin.site.urls),

    path('task/',include('todolist_app.urls')),

    path('todolist/',include('todolist_app.urls')),

    path('about/',include('todolist_app.urls')), 



    

]

网站运行,但目标没有实现。这很明显,因为about/被Map到与todolist/相同的URL
它会显示URL

http://127.0.0.1:8000/task/

还有

http://127.0.0.1:8000/todolist/

显示而不是它应该显示的。
现在,我想我需要修复todolist_app urls.py

from django.urls import path

from todolist_app import views

#from . import views



urlpatterns = [

    path('', views.todolist),

    path('contact', views.contact,name='contact'),

    path('about', views.about, name="about"), #the path can be anything.

]

我不知道该怎么解决。我首先不明白的是

path('', views.todolist),

应该表示127.0.0.1:8000/应该给出“欢迎使用todolist应用程序”的任何URL,但只有127.0.0.1:8000/todolist给出了“欢迎使用todolist应用程序”。
“contact”和“about”的视图Map显然不起作用。
如何解决此问题?

8xiog9wr

8xiog9wr1#

因此,要实现您的目标,请将项目的url文件更改为:

path('admin/', admin.site.urls),

    path('task/',include('todolist_app.urls')),

    path('',include('todolist_app.urls')), # change as this

然后可以得到以下的东西:
127.0.0.1:8000/about显示"welcome to about page"
127.0.0.1:8000/contact显示"welcome to contact page"
127.0.0.1:8000/显示"welcome to todolist app page"
这里的问题是在项目url文件中当你添加path('todolist/',include('todolist_app.urls'))时,todolist应用程序中的每个url都将以项目url文件中的给定字符串作为前缀。
您可以参考Django - URL Mapping了解更多信息。

svmlkihl

svmlkihl2#

在路线后添加斜线:

from django.urls import path

from todolist_app import views

urlpatterns = [

    path('', views.todolist),

    path('contact/', views.contact,name='contact'),

    path('about/', views.about, name='about'), #the path can be anything.

]

相关问题