繁体   English   中英

Django url未在基于类的视图中使用CreateView查找模板

[英]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
)

您说这是appurls.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前缀下使用,并具有与其操作一致的简单名称(即adddelete等)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM