2017-09-13 1 views
1

djangoを学ぶ。一つの質問があります。 私はフィードバックフォームを作成しました。フィードバックフォームの確認後、同じページにユーザーをリダイレクトする必要があります。以下のコードは次のとおりDjango get_absolute_url(フォーム提出後に同じページに戻る)

models.py

class Feedback(models.Model): 
     title = models.CharField(max_length=255) 
     text = models.TextField(max_length=5000) 
     user_name = models.CharField(max_length=255) 
     user_lastname = models.CharField(max_length=255) 
     email = models.EmailField(max_length=255) 
     send_time = models.DateTimeField(auto_now_add=True) 
     update_time = models.DateTimeField(auto_now=True) 

     def get_absolute_url(self): 
      return 

urls.py

url(r'^feedback$',views.FeedbackSendForm.as_view(), name='feedback'), 

views.py

class FeedbackSendForm(CreateView): 
     model = Feedback 
     fields = [ 
      'title', 
      'text', 
      'user_name', 
      'user_lastname', 
      'email', 
      ] 
     template_name = 'feedback.html' 

feedback.html

<form method="post"> 
    {% csrf_token %} 
    {% for field in form %} 
     <span class="text-danger">{{ field.errors }}</span> 
     <div> 
      <label class="control-label">{{ field.label }}</label> 
      {{ field }} 
     </div> 
    {% endfor %} 
    <button type="submit">Submit</button> 
</form> 

任意のアイデア?助けてください。 は、事前にありがとう

+0

これを実行するとエラーが発生しますか?はいの場合、Tracebackを投稿できますか? –

+1

コードインデントを修正してください。 –

+0

エラーはありません。私はちょうど "返す"ことを知らない – Aziz

答えて

0

あなたがモデルのget_absolute_urlを上書きしたい場合は、次のコードは、あなたを助けることができます。

from django.urls import reverse 


class Feedback(models.Model): 
    # the model fields 

    def get_absolute_url(self): 
     # reverse expects the view name 
     return reverse('feedback') 

任意のFeedbackオブジェクトに対する絶対URLが表示FeedbackSendFormになります。これは、ビュー名feedbackreverseに渡すことで指定します。

これは必要なものですか?

+0

仲間ありがとう! – Aziz

0

例CREATEVIEW:

views.py

class FeedbackSendForm(CreateView): 
     model = Feedback 
     fields = ['title','text','user_name','user_lastname','email',] 
     template_name = 'feedback.html' 
     form_class = form_name 

     def form_valid(self, form): 
      """ 
      If the form is valid, redirect to the supplied URL. 
      """ 
      return HttpResponseRedirect(self.get_success_url()) 
      """ 
      define `get_success_url' to your model or use `get_absolute_url` instead. 

この情報がお役に立てば幸いです。

詳細:https://ccbv.co.uk/projects/Django/1.5/django.views.generic.edit/CreateView/

関連する問題