Django get_absolute_url(表单提交后返回到同一页面)

pgccezyw  于 2023-01-31  发布在  Go
关注(0)|答案(3)|浏览(210)

学习django。我有一个问题。我已经做了反馈表,我需要重定向用户到同一页后,反馈表确认。下面是代码:

    • 型号. 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
    • 网址. py**
url(r'^feedback$',views.FeedbackSendForm.as_view(), name='feedback'),
    • 查看次数. py**
class FeedbackSendForm(CreateView):
      model = Feedback
      fields = [
           'title',
           'text',
           'user_name',
           'user_lastname',
           'email',
           ]
      template_name = 'feedback.html'
    • 反馈. 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>

有什么想法吗?请帮忙。先谢了

a64a0gku

a64a0gku1#

如果要覆盖模型的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,这是通过将视图名feedback传递给reverse来指定的。
这就是你想要的吗?

smdnsysy

smdnsysy2#

创建视图示例:
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/

70gysomp

70gysomp3#

如果我们在模型类中定义get_absolute_url,那么在发布表单时,我们可以将action标记保留为空,如下所示
在本例中,现在它在我们的模型类中搜索get_absolute_url,定义如下
定义获取绝对URL(自身):返回反向("post_detail",kwargs ={" pk ":)self.pk})
在更新或添加模型中的数据后,我们的页面被重定向到名为"post_detail"的URL。

相关问题