我在网址中传递了一个slu :::
url(r'^fragen/(?P<slug>[-_\w]+)/beantworten/$', qna_answer_add,
name="qna_answer_add"),
我可以像这样使用slu ::
qna_answer_model.question = Question.objects.get(slug=slug)
或者它是否存在安全风险,因为它来自网址?我需要进行清理或正则表达式检查,还是Django会自动执行此操作?
答案 0 :(得分:1)
是的,你可以使用它,django为你做。
def your_view(request,slug):
//you can use your slug as you want
qna_answer_model.question = Question.objects.get(slug=slug)
答案 1 :(得分:1)
更安全的替代方案可能是:
from django.shortcuts import get_object_or_404
def your_view(request, slug):
qna_answer_model.question = get_object_or_404(Question, slug=slug)
或者如果你需要严格控制在没有问题的情况下所做的事情:
from django.shortcuts import get_object_or_404
def your_view(request, slug):
try:
qna_answer_model.question = Question.objects.get(slug=slug)
except Question.DoesNotExist:
# do something else