2016-04-23 16 views
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 //更新

値を変更して[更新]を押すと、元のデータでフォームが再表示されます。詳細ページにリダイレクトされません。私は更新が失敗していると仮定します。何が失敗するのかを見る方法はありますか?

ありがとうございました。

+0

私はこの上のすべての午後に予定されています。 action = ""のように見えます。私は{%url 'dreams:update'%}を実行しようとしましたが、エラーが発生します。私はそれがスラグのパターンを理解しようとしていると思う。 –

+0

action = "{%url dreams:update dream.slug%}はフォームに正しいURLを生成しますが、データは更新されず、詳細ビューは正常に呼び出されません。 –

+0

あなたの正規表現 'urls.py'に' [\ w。@ + - ] 'の問題があります。正規表現では、"。 "、" @ "、" + "、および" - "はすべて特殊な意味を持っていますが、通常は '[\ w \ - ] +'を使ってDjangoの正規表現を使ったほうが良い結果が得られます。 – pydanny

答えて

1

ウェブページからフォームをカットアンドペーストします。

ポストの周りの引用符の右引用符ではありません

<form action="" method=”post”>

ため息.......

関連する問題