私はdjangoに小さなブログのウェブサイトを作成しました。私は一般的なビューとすべての作品を使用しています。私はルートが '投稿/'で始まる場合、DjangoはCreateViewと一致しません
# Project urls
url(r'^blog/', include('blog_app.urls'), name='blog'),
# App urls
url(r'^post/new/$', views.CreatePostView.as_view(), name='post_new'),
をblog_app.urlsするblog.urls経由でルーティングするんだけど、私は/ブログ/ポスト/新/ I'LLに行くとき
class CreatePostView(LoginRequiredMixin, generic.CreateView):
model = Post
login_url = '/login/'
redirect_field_name = 'blog_app/post_detail.html'
form_class = PostForm
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.author = self.request.user
self.object.save()
return super().form_valid(form)
:ジェネリックCREATEVIEWあるCreatePostView EXCEPT
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/blog/post/new/
Raised by: blog_app.views.PostDetailView
を取得しかし、これは動作します:
url(r'^new/post/$', views.CreatePostView.as_view(), name='post_new'),
を10
今すぐに行く場合
http://127.0.0.1:8000/blog/new/post/
私のフォームを参照してください。
最初の部分が '投稿/投稿'されている場合は、スラッシュの後に何を書いても問題ありません。少なくともそれは私が私が観察したと信じているものです。 それはあまりにも反対方向に動作します:
url(r'^somesuperlongroute/add/$',
views.CreatePostView.as_view(), name='post_new'),
これは動作しますが、それは可能になっている方法です。
ルートの最初の部分に '投稿'を付けるのはどういう意味ですか?
from django.conf.urls import url, include
from . import views
app_name = 'blog_app'
urlpatterns = [
url(r'^$', views.PostListView.as_view(), name='post_list'),
url(r'^about/$', views.AboutView.as_view(), name='about'),
url(r'^post/(?P<slug>[-\w]+)/$',
views.PostDetailView.as_view(), name='post_detail'),
url(r'^post/(?P<slug>[-\w]+)/edit/$',
views.PostUpdateView.as_view(), name='post_edit'),
url(r'^post/new/$',
views.CreatePostView.as_view(), name='post_new'),
url(r'^drafts/$', views.DraftListView.as_view(), name='post_draft_list'),
url(r'^post/(?P<slug>[-\w]+)/remove/$',
views.PostDeleteView.as_view(), name='post_remove'),
url(r'^post/(?P<slug>[-\w]+)/publish/$',
views.post_publish, name='post_publish'),
url(r'^post/(?P<slug>[-\w]+)/comment/$',
views.add_comment_to_post, name='add_comment_to_post'),
url(r'^comment/(?P<pk>\d+)/approve/$',
views.comment_approve, name='comment_approve'),
url(r'^comment/(?P<pk>\d+)/remove/$',
views.comment_remove, name='comment_remove'),
]
任意のアイデア:私は実際に多分私はちょうどここにこのファイルを含めるよどの作品、「ポスト/」で始まる5つの他のルートがありますか?私はモデル、ビュー、フォームをあなたが望むものを提供することができますが、私はそれらが適切であるとは思わなかった。
をうん、それは理にかなっています。私はそれについて考えなかった、ありがとう:) – MilyMilo