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的主要内容,如果未能解决你的问题,请参考以下文章

Django:让用户创建具有个性化网址的网站

我的电脑下载某些网站的东西,为啥老是出现404错误的报告

如何强制对我的 Django 应用程序的某些 URL 使用 SSL?

如何允许用户将他们的域映射到我网站上的 url?

Django身份验证和Ajax - 需要登录的URL

提供 URL 以访问 s-s-rS 报告,而无需通过网站或应用程序