我可以将URL参数传递给django中的get请求吗?

时间:2014-08-19 00:30:56

标签: python django

我在网址中传递了一个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会自动执行此操作?

2 个答案:

答案 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