【问题标题】:Django: User Reporting Some URL on WebsiteDjango:用户在网站上报告某些 URL
【发布时间】: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”字段? (很像我们在社交网络上看到的)。

我这样做是否正确,或者有更好的方法吗? 请帮我处理这段代码。提前致谢!

【问题讨论】:

    标签: python django


    【解决方案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。尝试其他视图并确认。
      猜你喜欢
      • 2019-07-09
      • 1970-01-01
      • 1970-01-01
      • 2023-01-23
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多