所以我试图构建一些东西,以便用户能够在网站上报告某些内容。这是模型,
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。按钮?
请帮我这个代码!
答案 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呈现为隐藏的表单字段,但这很容易被篡改。