gpt4 book ai didi

python - 在 Django 表单中获取上一个 URL

转载 作者:行者123 更新时间:2023-11-30 22:30:04 25 4
gpt4 key购买 nike

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

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

这是 View ,

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()

因为我需要创建/编辑多个 View 并在这种情况下重复操作。

当我使用类似的东西时,

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

它返回写入源代码的同一页面的 URL。我正在使用类似的东西,

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

从多个不同的 apps/html_pages 访问报告表单。如何从用户按下“报告”按钮的位置获取上一页的 URL?

请帮我解决这个代码!

最佳答案

只要按下报告按钮,您就可以将引荐来源网址存储在 session 中:

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()

您必须在一个请求-响应周期之外保留此引用站点。 session 是执行此操作的指定方式。另一种选择是将该网址呈现为隐藏表单字段,但这很容易被篡改。

关于python - 在 Django 表单中获取上一个 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46168574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com