gpt4 book ai didi

python - Django 中的多个 URL/ View

转载 作者:太空宇宙 更新时间:2023-11-04 03:41:42 24 4
gpt4 key购买 nike

假设我有以下文件夹结构:

mysite
- mysite
- views.py
- urls.py
- books
- views.py
- urls.py
- contact
- views.py
- urls.py

我想将 View 和 url 分开以使代码更易于处理。到目前为止,我只是将 View 捆绑到一个文件中,将 url 捆绑到另一个文件中,都在“mysite”文件夹中,但我觉得这是错误的做法。我首先尝试将 url“/contact”指向联系人文件夹中的 urls.py 文件,然后该 url 将指向/contact/views.py 文件中的 View (称为“联系人”)。

/mysite/urls.py

from django.conf.urls import include, patterns, url
from mysite import views
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
url(r'^contact/$', include('contact.views.contact')),
)

/contact/urls.py

from django.conf.urls import include, patterns, url
from mysite import views
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
url(r'^contact/$', views.contact),
)

/contact/views.py

from django.core.mail import send_mail
from django.http import HttpResponseRedirect
from django.shortcuts import render

def contact(request):
errors = []
if request.method == 'POST':
if not request.POST.get('subject', ''):
errors.append('Enter a subject.')
if not request.POST.get('message', ''):
errors.append('Enter a message.')
if request.POST.get('email') and '@' not in request.POST['email']:
errors.append('Enter a valid e-mail address.')
if not errors:
send_mail(
request.POST['subject'],
request.POST['message'],
request.POST.get('email', 'noreply@example.com'),
['siteowner@example.com'],
)
return HttpResponseRedirect('/contact/thanks/')
return render(request, 'contact_form.html',
{'errors': errors})

这是给我的错误

ImportError at /contact
No module named contact

最佳答案

您的 include 应该指向 urls.py 文件,而不是 View 。

另外,您不能在您的主 urlconf 中终止正则表达式(使用 $),否则将没有任何可匹配的内容。

url(r'^contact/', include('contact.urls')),

关于python - Django 中的多个 URL/ View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26124195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com