【发布时间】:2014-09-30 15:08:24
【问题描述】:
假设我有以下文件夹结构:
mysite
- mysite
- views.py
- urls.py
- books
- views.py
- urls.py
- contact
- views.py
- urls.py
我想将视图和 url 分开以使代码更易于处理。到目前为止,我只是将视图捆绑到一个文件中,并将 URL 捆绑到另一个文件中,都在“mysite”文件夹中,但我觉得这是错误的做法。我首先尝试将 url“/contact”指向联系人文件夹中的 urls.py 文件,然后该 url 将指向 /contact/views.py 文件中的视图(称为“contact”)。
/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})
这是给我的错误
/contact 处的 ImportError
没有名为contact的模块
【问题讨论】: