2
私はcookiecutter djangoをインストールしてすべてを稼働させました。私は、更新ビューがモデルを更新していないという問題に遭遇しました。それは、フローを自分自身にリダイレクトし続けるだけです。cookiecutter djangoを使った基本的なフォーム処理
夢/ models.py
class Dream(models.Model):
title = models.CharField(_('dream title'), max_length=60)
slug = models.SlugField(editable=False)
writeup = models.TextField(default="Boilerplate")
slugフィールドは、保存対象のタイトルから作成されます。
夢/ urls.py
url(
regex=r'^$',
view=views.DreamListView.as_view(),
name='list'
),
url(
regex=r'^(?P<slug>[\[email protected]+-]+)/$',
view=views.DreamDetailView.as_view(),
name='detail'
),
url(
regex=r'^(?P<slug>[\[email protected]+-]+)/update/$',
view=views.DreamUpdateView.as_view(),
name='update'
),
夢/ views.py
class DreamListView(ListView):
model = Dream
queryset = Dream.objects.all().filter(in_production=True)
# These next two lines tell the view to index lookups by slug
slug_field = 'slug'
slug_url_kwarg = 'slug'
class DreamDetailView(DetailView):
model = Dream
# These next two lines tell the view to index lookups by slug
slug_field = 'slug'
slug_url_kwarg = 'slug'
class DreamUpdateView(UpdateView):
model = Dream
fields =['title', 'writeup', ]
def get_success_url(self):
return reverse('dreams:detail', kwargs={'slug': self.get_object().slug})
slug_field = 'slug'
slug_url_kwarg = 'slug'
私はローカルホストを経由して、フォームにアクセスすることができます
{% extends "base.html" %}
{% load static %}{% load i18n %}
{% block title %}Edit Dream - {{ dream.title }}{% endblock %}
{% block content %}
<form action="" method=”post”>
{% csrf_token %}
{{ form.as_p }}
<div class="control-group">
<div class="controls">
<button type="submit" class="btn">Update</button>
</div>
</div>
</form>
{% endblock %}
更新ビューのテンプレート:8000 //更新
値を変更して[更新]を押すと、元のデータでフォームが再表示されます。詳細ページにリダイレクトされません。私は更新が失敗していると仮定します。何が失敗するのかを見る方法はありますか?
ありがとうございました。
私はこの上のすべての午後に予定されています。 action = ""のように見えます。私は{%url 'dreams:update'%}を実行しようとしましたが、エラーが発生します。私はそれがスラグのパターンを理解しようとしていると思う。 –
action = "{%url dreams:update dream.slug%}はフォームに正しいURLを生成しますが、データは更新されず、詳細ビューは正常に呼び出されません。 –
あなたの正規表現 'urls.py'に' [\ w。@ + - ] 'の問題があります。正規表現では、"。 "、" @ "、" + "、および" - "はすべて特殊な意味を持っていますが、通常は '[\ w \ - ] +'を使ってDjangoの正規表現を使ったほうが良い結果が得られます。 – pydanny