Django网站:使网址地址不可更改



我想得到您的建议,以阻止我的客户修改网址。 例如,我的网站中有一个客户,他在日志处理后会重定向到他自己的页面。

他的主页网址看起来像:http://localhost:8000/Compagny/id/id对应于Compagny1

例如:http://localhost:8000/Compagny/1/with1是第一个公司 但是,在网址栏中,如果我的客户写:http://localhost:8000/Compagny/2/他将被重定向到 Compagny2 的主页,我不想要这种可能性。

我的问题是:

我如何实现一些规则、功能或其他任何东西来设置不可更改的 url 地址?客户端无法更改 url 并看到引用另一个客户端的主页?

谢谢

编辑:

这是我的主页视图:

@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"),

您无法阻止用户在浏览器中键入网址。相反,您应该限制视图中的访问,如果不允许用户访问该公司,则返回 404。

例如,如果Compagny有一个外键要User,那么你可以这样做:

@login_required
def HomePage_Compagny(request, id) :
compagny = get_object_or_404(Compagny, pk=id, user=request.user)
...

在为页面编写函数的 views.py 文件中,您应该使用user=request.user给定的,您可以应用多种方法来阻止来自特定站点的用户。

  1. 在视图中使用if user.is_authenticated():方法。
  2. 为用户提供群组并拒绝访问特定页面
  3. 如果允许当前用户查看网站,则签入模板

如果用户访问一个网址,您可以将他重定向到主页或显示404或告诉他他没有此站点的访问权限。

例如,在模板中,您可以显示错误消息,例如:

{% if request.user == pageowner %} 
the site code
{%else%}
<h1>This is not your Site. Please Go back</h1>
{%endif%}

在 views.py 函数中,您必须定义一个"页面所有者"属性,您可以在其中定义"拥有"或至少创建该页面的用户。

最新更新