在Django表单中获取以前的URL

时间:2017-09-12 05:31:08

标签: python django

所以我试图构建一些东西,以便用户能够在网站上报告某些内容。这是模型,

class Report(models.Model):
    reporting_url = models.URLField()
    message = models.TextField()

这是观点,

def report(request):
url_report = ???
if request.method == 'POST':
    form = ReportForm(request.POST or None)
    if form.is_valid():
        new_form = form.save(commit=False)
        new_form.reporting_url = url_report
        new_form.save()

我不能使用像

这样的东西
url_report = request.get_full_path()

因为我需要创建/编辑多个视图&在那种情况下重复一遍。

当我使用类似的东西时,

url_report = request.META.get('HTTP_REFERER')

它返回写入from的相同页面的URL。我使用类似的东西

<a href="{% url 'contact:report' %}">Report</a>

从几个不同的应用/ html_pages到达报告表单。 如何从用户按下&#34;报告&#34;的位置获取上一页的URL。按钮?

请帮我这个代码!

1 个答案:

答案 0 :(得分:3)

只要按下Report按钮,您就可以将引用存储在会话中:

def report(request):
    if request.method == 'GET':
        request.session['report_url'] = request.META.get('HTTP_REFERER')
        # ...
    if request.method == 'POST':
        form = ReportForm(request.POST or None)
        if form.is_valid():
            new_form = form.save(commit=False)
            new_form.reporting_url = request.session.get('report_url')
            new_form.save()

您必须在一个请求 - 响应周期之外保留此引用程序。会话是指定的方式。另一种选择是将该URL呈现为隐藏的表单字段,但这很容易被篡改。