django的requet请求传参方式总结

本文详细总结了Django中请求参数的多种传递方式,包括URL路径参数、QueryDict对象(GET、POST)、查询字符串、请求体(Form Data、Non-Form Data)以及请求头。还介绍了如何通过request对象获取这些参数,并强调了使用get()方法的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


回想一下,利用HTTP协议向服务器传参有几种途径?
1.提取URL的特定部分,如/weather/beijing/2018,可以在服务器端的路由中用正则表达式截取;
2.查询字符串(query string),形如?key1=value1&key2=value2;
3.请求体(body)中发送的数据,比如表单数据、json、xml;
4.在http报文的头(header)中。

1.URL路径参数传参

在定义路由URL时,可以使用正则表达式提取参数的方法从URL中获取请求参数,Django会将提取的参数直接传递到视图的传入参数中。
未命名参数按定义顺序传递, 如:

urls.py文件中
url(r'^weather/([a-z]+)/(\d{4})/$', views.weather),

views.py文件中:
def weather(request, city, year):
    print('city=%s' % city)
    print('year=%s' % year)
    return HttpResponse('OK')

路径中的第一个参数传入视图的第一个参数, 路径中的第二个参数传入视图的第二个参数…

命名参数按名字传递,如:

urls.py 文件中
url(r'^weather/(?P<city>[a-z]+)/(?P<year>\d{4})/$', views.weather),


views.py文件中
def weather(request, year, city):
    print('city=%s' % city)
    print('year=%s' % year)
    return HttpResponse('OK')

路劲传参已经命名后, 在视图中形参的位置可以随意填写,类似于python的关键字传参形式.

2. Django中的Q

### Django HTML 路由传递参数教程 在 Django 中,可以通过多种方式在 HTML 文件中向视图函数传递参数。以下是几种常见的方式: #### 使用有名分组传递简单参数 可以利用 `<a>` 标签配合 `{% url %}` 模板标签来构建带有参数的链接。假设有一个名为 `user` 的路由规则,该规则接受一个整数类型的 ID 参数。 ```html <a href="{% url 'user' id=user.id %}">查看用户详情</a> ``` 此代码片段会生成形如 `/users/<id>/` 的 URL 地址[^1]。 对于更复杂的场景,比如需要传递多个参数或字符串类型的数据,则可以在定义路由时指定相应的转换器并调整模板内的调用形式。 #### 利用表单提交数据至服务器端处理 除了超链接外,还可以借助于 HTML 表单实现更加灵活多样的交互逻辑。当用户填写完毕后点击按钮触发 POST 请求发送给目标地址,在那里等待接收的就是对应的视图处理器。 ```html <form action="{% url 'process_form' %}" method="post"> {% csrf_token %} <!-- 输入框 --> <input type="text" name="username"/> <button type="submit">提交</button> </form> ``` 这里需要注意的是为了安全起见每次发起 POST 类型请求之前都应当加入 CSRF Token 字段验证身份合法性[^3]。 #### 正则表达式匹配复杂模式下的路径变量 如果遇到一些特殊需求无法单纯依靠内置语法完成的话,也可以采用正则表达式的手段来自定义更为精确细致化的映射关系。例如下面的例子展示了如何捕捉年份信息作为查询条件的一部分[^4]。 ```python from django.urls import re_path urlpatterns = [ ... re_path(r'^archive/(?P<year>[0-9]{4})/$', views.year_archive), ... ] ``` 对应前端页面上就可以像这样写法访问特定年度的文章列表页了: ```html <a href="{% url 'year_archive' year=2023 %}">浏览2023年的文章</a> ``` 以上就是关于怎样在 Django 应用程序里经由 HTML 实现路由间传输额外信息的主要介绍内容[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值