Django:如何获取在 url 中传递的参数值? [复制]
Posted
技术标签:
【中文标题】Django:如何获取在 url 中传递的参数值? [复制]【英文标题】:Django: how to get parameters value passed in url? [duplicate] 【发布时间】:2020-08-31 01:21:10 【问题描述】:我有一条路:
path('update/<int:pk>/<int:projet>', UtilisateurUpdateView.as_view(), name='update', ),
我希望能够在我的 UtilisateurUpdateView 中获取参数“projet”的值,但不知道如何
例如,如果我的url是http://127.0.0.1:8000/project/update/1/8我希望能够恢复8对应的参数'projet'
class UtilisateurUpdateView(UpdateView):
model = Utilisateur
fields = ['uti_nom','uti_pre','uti_mai','uti_sit','uti_pro']
print('projet POST',self.request.POST['projet'])
def get_context_data(self, **kwargs):
data = super(UtilisateurUpdateView,self).get_context_data(**kwargs)
if self.request.POST:
data["utilisateur"] = self.request.user.username
# data["projet"] = get_object_or_404(Projet, pro_ide = self.request.POST['projet'])
data["user_profil"] = self.request.session.get('user_profil')
data["application"] = ApplicationFormset(self.request.POST, instance=self.object)
else:
data["application"] = ApplicationFormset(instance=self.object)
return data
def form_valid(self, form):
context = self.get_context_data()
application = context["application"]
user_profil = context["user_profil"]
# print('projet',context["projet"].pro_nom)
if user_profil == 'investigateur':
self.object.uti_val = 0 # demande modifiée par investigateur -> repasse à non validée + envoie de mail
elif user_profil == 'moniteur':
self.object.uti_val = 1 # demande validée par moniteur -> validée + envoie de mail
self.object.uti_val_dat = timezone.now()
else:
self.object.uti_val = 0
self.object = form.save()
if application.is_valid():
form.instance = self.object
application.save()
# informations nécessaires pour l'envoi d'un mail
utilisateur_nom = form.data['uti_nom'] # nom de l'utilisateur pour lequel une demande est créée
utilisateur_prenom = form.data['uti_pre']
utilisateur = utilisateur_nom+' ,'+utilisateur_prenom
applications = [app.app_app_nom for app in Application.objects.filter(uti_ide=self.object.uti_ide)]
# email('modification',context["utilisateur"],'j.lecarrou@hotmail.fr',utilisateur,context["projet"].pro_nom,applications)
return super().form_valid(form)
def get_success_url(self):
return reverse("project:index")
【问题讨论】:
这能回答你的问题吗? Capturing url parameters in request.GET 您可以使用self.kwargs
,例如self.kwargs['projet']
.
@Alasdair: self.kwargs['projet'] 还是 self.kwargs['project']? ;我已经尝试过,但“projet”无法识别
糟糕,project
打错了 - 我没有意识到就翻译成英文。
我再试一次,它工作 self.kwargs['projet']...不要我以前做过...谢谢
【参考方案1】:
您应该能够在您的 views.py 中捕获这些参数
def someview(request, pk, projet):
someobj = Someobj.objects.all().filter(pk=pk, project=projet)
#context ...
#render....
【讨论】:
感谢您的回复,但我使用基于类的视图...而且我不使用 GET 所以答案没有帮助 我已更改重复的答案,以便它链接到有关基于类的视图的答案。以上是关于Django:如何获取在 url 中传递的参数值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章