Django:用户在网站上报告某些 URL
Posted
技术标签:
【中文标题】Django:用户在网站上报告某些 URL【英文标题】:Django: User Reporting Some URL on Website 【发布时间】:2018-02-20 08:14:05 【问题描述】:所以我正在尝试构建一些东西,以便用户能够在网站上报告一些东西。这是模型,
class Report(models.Model):
reporting_url = models.URLField()
message = models.TextField()
我为此模型创建了包含“消息”字段的表单,只是因为“reporting_url”是它需要根据用户单击“报告”按钮的特定页面自行填充的内容。
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 传递给表单中的“reporting_url”字段? (很像我们在社交网络上看到的)。
我这样做是否正确,或者有更好的方法吗? 请帮我处理这段代码。提前致谢!
【问题讨论】:
【参考方案1】:如果该特定页面上有一个报告按钮,那么我相信您可以编写自定义上下文处理器。
更多信息:Django: get URL of current page, including parameters, in a template
https://docs.djangoproject.com/en/1.11/ref/templates/api/
或者直接写在你函数的views.py中并设置
url_report = request.get_full_path()
【讨论】:
【参考方案2】:我认为您可以在 URL 的同一页面上使用表单并使用:
url_report = request.get_full_path()
在视图中,获取当前 URL。
如果您想为报告表单创建单独的视图,则为其他。你可以使用
url_report = request.META.get('HTTP_REFERER')
获取将用户引导至该页面的上一个或引用 URL。
request.META.get('HTTP_REFERER') 如果来自不同的网站,将返回 None。
【讨论】:
先生,url_report = request.META.get('HTTP_REFERER') 没有返回以前的或引用的 URL。相反,它返回的是正在写入表单的相同页面 url request.META.get('HTTP_REFERER') 将返回相同的页面 url,如果它是从同一页面访问的。这就像从同一页面单击页面的链接,否则它会返回引用 url。尝试其他视图并确认。以上是关于Django:用户在网站上报告某些 URL的主要内容,如果未能解决你的问题,请参考以下文章