我创建了一个用户可以添加新项目的页面(本例中的注释),我正在使用我最近开始学习的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"
然后这是我在app的urls.py中使用的url
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文件中使用了与127.0.0.1:8000主页面相同的URL,但是它有效。
我已经看过几个教程甚至docs,但似乎无法找到我做错的事情。我是否还需要添加一个函数才能将其保存在数据库中,否则CBV会完成所有工作?
编辑:我得到的错误就是这个
找不到页面(404) 请求方法:GET 请求网址: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
)
答案 0 :(得分:1)
你说那是urls.py
的{{1}},这意味着它包含在项目的app
中。
正如您现在所示,所有应用的URI均位于urls.py
前缀
notes
因此目前的情况是页面的正确URI是
url('^notes/', include('madNotes.urls')),
为了清理一下,我建议将应用的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
等)