我可以在Django中将URL参数传递到get请求中吗?

2024-09-27 18:24:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我在url中传递一个slug,如下所示:

url(r'^fragen/(?P<slug>[-_\w]+)/beantworten/$', qna_answer_add,
    name="qna_answer_add"),

我可以这样用鼻涕虫吗:

qna_answer_model.question = Question.objects.get(slug=slug)

还是会有安全风险,因为它来自url?我需要做一个清理或正则表达式检查还是Django会自动这样做?你知道吗


Tags: djangoanswernameaddurlgetmodelobjects
2条回答

是的,你可以用它,django帮你做。你知道吗

def your_view(request,slug):
    //you can use your slug as you want
    qna_answer_model.question = Question.objects.get(slug=slug)

更安全的选择可能是:

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

相关问题 更多 >

    热门问题