【发布时间】:2019-01-02 05:49:52
【问题描述】:
我有一个report 应用程序来管理我项目中所有不当内容的标记。会员reporter 可以举报其他会员reported 发布不当内容。一切正常并创建了报告对象,但它最终不会重定向到感谢页面。但返回相同的表单页面。非常奇怪的是,当我在地址栏中粘贴http://127.0.0.1:8000/report/thanks/ 时,我惊讶地看到了表单页面。通常报告页面的 URL 为 http://127.0.0.1:8000/report/Amanda/ 这里到底出了什么问题。
下面是我的 models.py
class Report(models.Model):
reporter = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='reporting_members')
reported = models.ForeignKey(User, on_delete=models.CASCADE, null=True, related_name='reported_members')
report_url = models.URLField(max_length=2000, blank=True, null=True)
reported_at = models.DateTimeField(auto_now_add=True)
reporting_choices = (
('1', 'The images posted by this user are not relevant to the Post),
('2', 'Rude or abusive content, The words chosen by the user are inappropriate'),
('3', 'This user is asking me to change my review in return for favor '),
('4', 'Other'),
)
reason_to_report = models.CharField(max_length=1, choices=reporting_choices)
reason = models.TextField(blank=True, null=True)
def __str__(self):
return '{} is reporting {} for {}'.format(self.reporter, self.reported, self.reason_to_report)
def get_absolute_url(self):
return reverse('report:thanks')
以下是我的 views.py
class ReportCreateView(LoginRequiredMixin, CreateView):
model = Report
fields = ('reason_to_report', 'reason')
def form_valid(self, form):
form.instance.reporter = self.request.user
form.instance.reported = User.objects.get(username=self.kwargs.get('username'))
next = self.request.POST.get('next')
form.instance.report_url = next
super().form_valid(form)
return redirect('report:thanks')
class ThanksView(LoginRequiredMixin, TemplateView):
template_name = 'report/thanks.html'
下面是我的 urls.py
urlpatterns = [
url(r'^(?P<username>[-\w]+)/$', views.ReportCreateView.as_view(), name='report_user'),
url(r'^thanks/$', views.ThanksView.as_view(), name='thanks'),
]
下面是我的报告表单的模板
<form action="" method="post" >
{% csrf_token %}
{% bootstrap_form form %}
<input type="hidden" name="next" value="{{ request.META.HTTP_REFERER }}">
<input class="btn btn-primary" type="submit" />
<a href="{% url 'home' %}">
<button class="btn btn-default">Cancel</button>
</a>
</form>
【问题讨论】:
标签: django python-3.x django-templates django-views