我想得到您的建议,以阻止我的客户修改网址。 例如,我的网站中有一个客户端,他会在日志过程后重定向到他自己的页面。
他的主页网址如下:http://localhost:8000/Compagny/id/
id
与Compagny1
对应。
例如:http://localhost:8000/Compagny/1/
1
是第一个Compagny
但是,在网址栏中,如果我的客户写道:http://localhost:8000/Compagny/2/
他将被重定向到Compagny2的主页,我不希望这种可能性。
我的问题是:
如何设置一些规则,功能或其他任何内容以便设置不可更改的网址?客户无法更改网址并查看引用其他客户的主页?
谢谢
编辑:
这是我的主页视图:
@login_required
def HomePage_Compagny(request, id) :
compagny = get_object_or_404(Compagny, pk=id)
intervention = CompagnyIntervention.objects.filter(Compagny__id=id).all()
pointsajoutes = CompagnyAjout.objects.filter(Compagny__id=id).all()
coefficient = CoefficientIntervention.objects.last()
if request.method == 'POST':
form_ajout = ContratAjoutFormulaire(request.POST or None)
if form_ajout.is_valid() :
#Several processes
return HttpResponseRedirect('http://mywebsite/'+id)
else:
form_ajout = ContratAjoutFormulaire()
context = {
...
}
return render(request, 'CompagnyHomePage.html', context)
此部分的我的网址是:url(r'^Compagny/(?P<id>\d+)/$', views.Homepage_Compagny, name="Homepage"),
答案 0 :(得分:1)
在您为该页面编写函数的views.py文件中,您应该使用user=request.user
,并且可以应用多种方法来阻止来自特定站点的用户。
if user.is_authenticated():
方法。 如果用户访问网址,您可以将其重定向到主页面或显示404或告诉他他没有此网站的访问权限。
对于模板中的示例,您可以显示错误消息,如:
{% if request.user == pageowner %}
the site code
{%else%}
<h1>This is not your Site. Please Go back</h1>
{%endif%}
在views.py函数中,您必须定义一个“pageowner”属性,您可以在其中定义“拥有”或至少创建该页面的用户。
答案 1 :(得分:1)
您无法阻止用户在浏览器中输入网址。相反,您应该限制视图中的访问权限,如果不允许用户访问该公司,则返回404。
例如,如果User
有@login_required
def HomePage_Compagny(request, id) :
compagny = get_object_or_404(Compagny, pk=id, user=request.user)
...
的外键,那么您可以这样做:
$count = $this->createQueryBuilder('p')
->join('p.comments', 'c')
->select('count(c.id)')
->getQuery()
->getSingleScalarResult();