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



我正在我的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')

什么是最佳实践?如果是这样,正确的语法是什么(我知道这个例子不正确(?

这取决于您的需求。

不要定义固定的 url 路由;如果使用查询参数进行筛选,并且有多个可能的参数

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

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

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

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

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

您应该查看路径模式。在路径中强制实施 GET 参数并不是一个好的做法。因此,如果您想要求用户名,例如,您可以使用:

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

你可以在 Django 文档中找到更多模式来捕获字符串、slug、integer 等。

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

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

关于 GET:

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

您还可以使用request.GET.get("value")如果密钥不存在,它将返回 None。如果要使用默认参数,当然可以使用request.GET.get("value", "default")

您可以在链接中使用任意数量的参数,无论是否带有路径模式。它们的值将存储在request.GET

相关内容

最新更新