我正在定义正则表达式以捕获url中的参数,如教程中所述。 如何从url访问参数作为HttpRequest对象的一部分? 我的HttpRequest.GET当前返回一个空的QueryDict对象。

我想学习如何在没有库的情况下这样做,这样我就能更好地了解Django。


#1楼

我想分享一个可能为您节省一些时间的提示。
如果您打算在urls.py文件中使用类似的内容:

url(r'^(?P<username>\w+)/$', views.profile_page,),

这基本上意味着www.example.com/<username> 。 请务必将其放置在你的URL条目的结束,否则,很容易造成下面下面的URL条目,即冲突访问它们的人会给你不错的错误: User matching query does not exist.

我自己刚刚体验过它; 希望能帮助到你!


#2楼

当url如下: domain/search/?q=haha ,那么你将使用request.GET.get('q', '')

q是您想要的参数,如果找不到q''是默认值。

但是,如果您只是配置URLconf ,那么regex中的捕获将作为参数(或命名参数)传递给函数。

如:

(r'^user/(?P<username>\w{0,50})/$', views.profile_page,),

然后在你的views.py你会有

def profile_page(request, username):# Rest of the method

#3楼

这不是您要求的,但此代码段有助于管理templates query_strings


#4楼

为了澄清camflan的解释,让我们假设你有

  • 规则url(regex=r'^user/(?P<username>\\w{1,50})/$', view='views.profile_page')
  • http://domain/user/thaiyoshi/?message=Hi传入请求中

URL调度程序规则将捕获URL 路径的一部分 (此处为"user/thaiyoshi/" ),并将它们与请求对象一起传递给视图函数。

解析查询字符串(此处为message=Hi ),并将参数存储为request.GETQueryDict 。 不进行HTTP GET参数的进一步匹配或处理。

此视图函数将使用从URL路径和查询参数中提取的两个部分:

def profile_page(request, username=None):user = User.objects.get(username=username)message = request.GET.get('message')

作为旁注,您将在request.method找到请求方法(在本例中为"GET" ,对于提交的表单通常为"POST" )。 在某些情况下,检查它是否与您期望的相匹配是有用的。

更新:在决定是使用URL路径还是查询参数传递信息时,以下内容可能会有所帮助:

  • 使用URL路径来唯一标识资源,例如/blog/post/15/ (not /blog/posts/?id=15
  • 使用查询参数来改变资源的显示方式,例如/blog/post/15/?show_comments=1/blog/posts/2008/?sort_by=date&direction=desc
  • 制作人性化的URL,避免使用ID号并使用日期,类别和/或slu :: /blog/post/2008/09/30/django-urls/

#5楼

使用GET

request.GET["id"]

使用POST

request.POST["id"]

#6楼

def some_view(request, *args, **kwargs):if kwargs.get('q', None):# Do something here ..

#7楼

对于只有request对象的情况,可以使用request.parser_context['kwargs']['your_param']


#8楼

如果您的网址如下所示,您有两种常用的方法:

https://domain/method/?a=x&b=y

V1:

如果特定密钥是强制性的,您可以使用:

key_a = request.GET['a']

这将返回的值a ,如果项存在,并且异常,如果不。

V2:

如果您的钥匙是可选的:

request.GET.get('a')

您可以尝试不带任何参数,这不会崩溃。 所以你可以用try: except:来包装它try: except:并在示例中返回HttpResponseBadRequest() 。 这是一种简单的方法,可以使代码不那么复杂,而无需使用特殊的异常处理。


#9楼

我想在这里添加一些我自己的选项。 有人会想知道如何在urls.py中设置路径,例如

domain/search/?q=CA

这样我们就可以调用查询了。

事实是,没有必要在urls.py中设置这样的路由。 你需要设置的只是urls.py中的路由

urlpatterns = [path('domain/search/', views.CityListView.as_view()),
]

当你输入http:// servername:port / domain / search /?q = CA. 查询部分'?q = CA'将自动保留在您可以引用的哈希表中

request.GET.get('q', None).

这是一个例子(views.py)

class CityListView(generics.ListAPIView):serializer_class = CityNameSerializerdef get_queryset(self):if self.request.method == 'GET':queryset = City.objects.all()state_name = self.request.GET.get('q', None)if state_name is not None:queryset = queryset.filter(state__name=state_name)return queryset

另外,在Url中编写查询字符串时

http://servername:port/domain/search/?q=CA

不要将查询字符串包装在引号中,例如

http://servername:port/domain/search/?q="CA"

#10楼

这些查询目前以两种方式完成。 如果要访问查询参数(GET),可以查询以下内容:

http://myserver:port/resource/?status=1
request.query_params.get('status', None) => 1

如果要访问POST传递的参数,则需要以这种方式访问​​:

request.data.get('role', None)

使用'get()'访问字典(QueryDict),您可以设置默认值。 在上述情况下,如果未通知“状态”或“角色”,则值为“无”。

在request.GET中捕获url参数相关推荐

  1. url中传递url参数|url中特殊字符、?、=无法解析问题

    url中传递url参数|url中特殊字符&.?.=无法解析问题 1.微信小程序报错:SyntaxError: Unexpected end of JSON input 2.错误场景复现 3.错 ...

  2. express中获取url参数

    问号传参获取参数 获取 http://127.0.0.1:3001/user?id=10&name=zs 中的查询参数: 直接使用 req.query 获取参数即可: 注意:URL 地址栏中通 ...

  3. 处理urlparse/urllib.parse中修改url参数结果的奇思异想

    最近,同事埋头于对多参url中的每个参数进行模糊测试,达到测试函数能否进行的结果.在写脚本的时候,我开始给他的建议是,将完整的url进行切割,以针对每个list元素进行替换的思路完成脚本,翻了一下之前 ...

  4. asp.net mvc 如何在View中获取Url参数的值

    如果url是 /home/index?id=3 直接Request就ok. 但是如果路由设定为:{controller}/{action}/{id} url是 /home/index/3    这时想 ...

  5. java href_jnlp href属性中的url参数

    我已经有一段时间寻找这个答案,从来没有得到具体的解决方案 . 所以在这里我最终解决了它 . 我将在下面提出解决方案 . 当前情况:有一个简单的java应用程序从带有参数的浏览器启动 . 现有的路由是b ...

  6. html截取url字段,Html中截取url参数 实现HTML间的url传值

    大家好: 今天遇到一个问题,页面全是html,url传值,竟然获取不到参数值: A.html //登录按钮 jQuery(function($) { $("#login").cli ...

  7. vue中获取url参数

    1.路由获取 this.delivery_asn = this.$route.query.delivery_asn; 2.非路由获取 (1)在js文件中写方法 export function getU ...

  8. java namevaluepair_java-如何将NameValuePair中的URL参数添加到HttpPost请求中

    我正在尝试向webApi URL发出请求,您编写了以下代码,并且我在NameValuePair对象中有参数. 现在我不知道如何将这些参数添加到基本uri中,我必须通过串联字符串来手动执行此操作吗?或还 ...

  9. URL中包含url参数,(文件路径作为参数)

    用encodeURIComponent方法,把路径放在里面,可以防止斜杠被取消. 以下attachfiles是我的一个文件的绝对路径. window.location.href="${pag ...

最新文章

  1. springboot+mybatis ,出现多于的参数导致查询数据缺少
  2. 为啥八位的计算机可以用补码表示-128
  3. 备份文件命令SqlServer一键复制数据库脚本
  4. 微信小程序 引用其他js里的方法
  5. (JAVA)Object类之toString()和equals()
  6. vim模板插件vim-template的使用
  7. 糍粑大叔的独游之旅-战斗!之弹道实现(上)
  8. 解决xx is not in the sudoers file. This incident will be reported.问题
  9. 如何学习前端知识?优秀的前端开发工程师应该具备什么条件?
  10. UVA12148 LA4214 Electricity【日期计算】
  11. 四种软件开发模式(瀑布、迭代、螺旋、敏捷),对比分析
  12. linux命令行大于号、小于号、双大于号、双小于号
  13. Zoned-Storage - 对ZNS块设备进行基准测试
  14. 二、谈谈对数据库中索引的理解
  15. PHP png合并到jpg,合并jpg的png并保持与php的透明度
  16. 大数据核心技术与应用实战峰会(上):大数据在多行业内大放异彩
  17. 408计算机专业统考哪些科目,408计算机考研统考科目难度分析-计算机操作系统...
  18. 电气施工标准都有哪些
  19. 投资利润率、内部收益率和回收期案例
  20. 评测TFN PM1200手持无线电综合测试仪性能

热门文章

  1. sigsuspend的理解
  2. c++疯狂代码之读和写。。。(用读操作来触发写)
  3. android singleTop 不起作用
  4. Can't call rollback when autocommit=true
  5. 含有计算机专业词的告别文案,那些超级适合告别的文案,充满了对过往的怀念和遗憾...
  6. 创建型模式--原型模式
  7. 在Activity中响应ListView内部按钮的点击事件的两种方法
  8. 如何在Storyboard中使用Scroll view
  9. hibernate之Configuration对象
  10. iOS macOS的后渗透利用工具:EggShell