[英]Django url not finding a template using CreateView in Class-Based Views
我创建了一个页面,用户可以在其中添加新项目(在这种情况下为注释),并且正在使用我最近开始学习的CBV。
这是我的表格
class NoteForm(forms.ModelForm):
class Meta:
model = Note
fields = ('title', 'note', 'tags')
这是views.py中的视图
class NoteCreate(CreateView):
model = Note
form_class = NoteForm
template_name = "add_note.html"
这是我在应用程序的urls.py中使用的网址
from django.conf.urls import patterns, url
from . import views
from madNotes.views import NoteCreate, NoteIndex,
urlpatterns = patterns(
'',
url(r'^notes/add/$', NoteCreate.as_view(), name="new_note"),
url(r'^$', NoteIndex.as_view()),
url(r'^(?P<slug>\S+)/$', views.NoteDetail.as_view(), name="entry_detail"),
)
注意:我在项目urls.py文件中使用了与主页相同的url,即127.0.0.1:8000。
我看过一些教程,甚至是文档 ,但似乎找不到我做错的事情。 我是否还需要添加一个函数以将其保存在数据库中,否则CBV会全部完成?
EDit:我得到的错误是
找不到页面(404)请求方法:GET请求URL: http : //127.0.0.1 : 8000/notes/add/
这是项目的urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
from MadNotez import settings
from registration.backends.default.views import RegistrationView
from madNotes.forms import ExRegistrationForm
if settings.DEBUG:
import debug_toolbar
urlpatterns = patterns('',
url(r'^__debug__/', include(debug_toolbar.urls)),
url(r'accounts/register/$', RegistrationView.as_view(form_class = ExRegistrationForm), name='registration_register'),
url(r'^accounts/', include('registration.backends.simple.urls')),
url(r'^admin/', include(admin.site.urls)),
url('^markdown/', include('django_markdown.urls')),
url('^notes/', include('madNotes.urls')),
#url(r'^$', views.NoteCreate.as_view(), name="new note"), when I used it here it worked
)
您说这是app
的urls.py
,这意味着它包含在项目的urls.py
。
如您现在所显示,所有应用程序的URI都位于notes
前缀下:
url('^notes/', include('madNotes.urls')),
因此,就目前情况而言,该页面的正确URI是
http://127.0.0.1:8000/notes/notes/add/
为了进行一些清理,我建议将应用程序的urls.py
修改为
url(r'^add/$', NoteCreate.as_view(), name="new_note"),
这样就可以到达该页面
http://127.0.0.1:8000/notes/add/
这样,所有应用程序的页面/服务都可以在notes
前缀下使用,并具有与其操作一致的简单名称(即add
, delete
等)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.