我想建立一个系统,需要检测用户打开了哪些url,并统计打开次数。
有几个不同的url共享同一个WaitView(TemplateView),所以我想在用户点击每个url的时候统计它的次数。
我在urls中加了一个dic,希望它能返回用户打开的正确url到Waitview的context1。
但是我找不到一个正确的方法来获取正确的url,(我尝试使用HttpRequest.get_full_path(),但是它继续错误。"TypeError: get_full_path() missing 1 required positional argument: 'self'")
另外,我希望WaitView能接收到正确的url和次数,然后在打开的页面上显示出来,(需要正确的url才能渲染)
所以我想知道你是否有一些建议。
真的很感谢您的帮助。
# urls.py
'''
urlpatterns = [
re_path('get_times/.+', WaitView.as_view(), {"url": ***CORRECT_URL***})
]
'''
# views.py
'''
class WaitView(TemplateView):
template_name = 'wait.html'
def get_context_data(self, **kwargs):
context1 = kwargs.items()
print(context1)
'''
请求对象存储在 .request
的属性 View
. 因此,您可以通过以下方式访问它 self.request
的方法中,因此你可以用。
class WaitView(TemplateView):
template_name = 'wait.html'
def get_context_data(self, **kwargs):
print(self.request.get_full_path())
return super().get_context_data(**kwargs)
你可以使用 .build_absolute_uri()
方法[Django-doc] 来生成绝对的URI(所以包括协议、主机名等)。
所以不需要在上下文中添加参数。