通过GET传递变量的最佳实践是什么?

问题描述 投票:1回答:2

我正在URL中传递变量:

mydomain.com/app/?next_page=my_page

我可以在view中通过以下方式获得此变量:

def mypage(request):
   var = request.GET['next_page'] 

也是将URL更改为要求next_page的最佳实践吗?类似于以下内容:

path('app/?nextpage=<str>', mypage, name='my_page')

最佳做法是什么?如果是这样,正确的语法是什么(我知道示例是错误的)?

django django-views
2个回答
0
投票

取决于您的需求。

不定义固定的网址路由;如果您使用查询参数进行过滤,并且有多个可能的参数

Example: "app/photos?size=100x100" and "app/photos/?color=blue"

定义固定的网址路由;如果每个页面都相同,例如特定页面的详细信息:

Example: "app/orders/123123123" and "app/orders/123123123"

顺便说一句,正确的语法是:

path(app/<str:next_page>/, mypage, name="my_page")

0
投票

您应该查看路径模式。在路径中强制使用GET参数并不是一个好习惯。因此,例如,如果您需要用户名,则可以使用:

path('bio/<username>/', views.bio, name='bio'),

您可以在Django文档中找到更多模式来捕获字符串,段,整数等。>>

并且在视图中,您应该这样定义函数:

def mypage(request, username):
    ...code...

关于GET:

请记住,如果该参数不存在,则request.GET["value"]将引发ValueError。因此,您可以捕获该错误以通知用户他们缺少参数。 (这将使此参数成为必需。)

您也可以使用request.GET.get("value"),如果该键不存在,它将返回None。如果要使用默认参数,可以使用request.GET.get("value", "default")

您可以在链接中使用任意数量的参数(带或不带路径模式)。它们的值将存储在request.GET

© www.soinside.com 2019 - 2024. All rights reserved.