当前位置: 首页 > 网络应用技术

如何获得Django的请求

时间:2023-03-08 13:11:17 网络应用技术

  简介:许多朋友问有关Django如何获得请求请求请求的问题。本文的首席CTO注释将为您提供详细的答案,以供您参考。我希望这对每个人都会有所帮助!让我们一起看看!

  服务器收到HTTP协议的请求后,将根据消息创建HTTPRequest对象视图函数的第一个参数。

  形式标签中的“获取”和“帖子”

  在HTML中,表单的作用是在标签中收集内容。然后,这些内容将发送到服务器。

  一种表格必须指定两件事:

  表格表格提交的示例:

  您可以在地址栏中看到参数。

  表格表格提交的示例:

  一个-Click Multi -Value GetList方法:

  请求对象的属性是获取的,帖子是querydict类型的对象

  与Python词典不同,Querydict类型的对象用于处理具有多个值的多个值的相同键

  获取属性:

  查看类视图基于请求方法。

  以相应的方式,编写相应的逻辑函数。

  它是在视图中的方法中编写逻辑。

  参考查看视图。

  url.py中的配置路由是通过:as_view()

  当文件上传Django时,文件数据将保存在request.files上。文件中的每个键是输入type =“ file” name =“” /名称中的名称。

  设置文件的存储路径:

  1.在项目的根目录下,在静态中创建媒体文件夹

  2.上传图片后,它将保存到“/static/媒体/文件”中

  3.打开settings.py文件以增加媒体_root项目

  仅在启用请求方法和提交enableype =“ multipart/form-data”的情况下才包含数据。否则,文件将是类似于字典的空对象

  文件由文件函数上传:

  httpresponse对象:

  httpresponse的子类:

  返回数据的响应函数是:

  httpresponse()返回到简单的字符串对象

  Render()渲染模板

  重定向()重定向

  jsonresponse()返回json数据

  HTTP协议:

  HTTP(超文本传输协议)是一个应用程序层协议,由请求和响应组成,是标准客户端服务器模型。HTTP是无状态协议。

  客户端和服务器如何记录登录状态?

  在浏览器中---- cookie :(请自己找到)

  注意:设置cookie值并删除cookie值是响应对象的所有操作,并且从相应的通信中获得了获得的cookie。

  尽管可以保留cookie,但请注意不要存储敏感信息。

  httprequest对象

  httprequest是指从客户端单独的HTTP请求。

  httprequest实例的属性包括有关请求的最重要信息(请参阅表H-1)。除了会话外,所有属性应仅被视为读取。

  表H-1。httprequest对象属性

  属性

  描述

  路径指示字符串提交了请求页的完整地址,不包括域名,例如“/music/bands/the_beatles/”。

  方法

  指示提交请求的HTTP方法。它始终是大写。例如:

  如果request.method =='get':

  做一点事 ()

  Elif Research.Method =='Post':

  do_something_else()

  获取字典对象包含有关所有HTTP的GET参数的信息。请参阅QueryDict文档。

  邮政

  字典对象包含有关所有HTTP POST参数的信息。请参阅查询文档。

  通过帖子提交的请求可能包含一个空词典,也就是说,通过POST方法提交的表格可能不包含数据。因此,使用方法不应使用unignes.post来判断使用方法。相反,应该使用它。

  注意:发布不包括文件上传信息。请参阅文件。

  要求

  为了方便起见,这是一个字典对象,首先搜索帖子,然后搜索php的$ _reqeust。

  例如,如果您获得= {“ name”:“ john”},则post = {“ age”:'34'},请求[“ name”]将为“ john”,请求[age'age']将为”34“

  强烈建议使用获取和发布而不是请求。这是用于远程兼容性和更清晰的表达式。

  cookies标准python词典包含所有cookie.base和值是字符串。请参阅第12章cookie使用的更多信息。

  文件

  字典对象包含所有已上传的文件。文件键来自input type =“ file” name =“” /。文件的值是标准Python字典,其中包含以下三个键:

  文件名:字符串,指示文件的文件名。

  内容类型:上传文件的内容类型。

  内容:上传文件的原始内容。

  请注意,仅在请求方法中的文件是发布的,并且提交的表单包含eNableype =“ multipart/form-data”。否则,文件只是一个空词典对象。

  元

  标准Python字典包含所有有效的HTTP标头信息。有效的头信息与客户端和服务器有关。这里有几个示例:

  content_length

  内容类型

  query_string:不可预测的原始请求字符串。

  远程_ADDR:客户端IP地址。

  remote_host:客户端主机名。

  server_name:服务器主机名。

  server_port:服务器端口号。

  例如,Meta中的任何HTTP标头信息都是HTTP_前缀的关键,例如::

  http_accept_encoding

  http_accept_language

  HTTP_HOST:客户端发送的主机标头信息。

  HTTP_REFERR:如果存在,则指向页面。

  http_user_agent:客户端的用户代理字符串。

  http_x_bnder:X弯头标头信息的值,如果设置为。

  用户

  django.contrib.auth.models.user对象表示当前登录用户。如果当前用户尚未登录,则用户将设置django.contrib.auth.models.models.models.models.somoususe.you可以将它们与is_authenticated区分开():

  如果request.user.is_authenticated():

  #为登录用户做点事。

  别的:

  #为匿名使用。

  当Django激活AuthenticationMiddleware时,用户很有效。

  有关认证和用户的完整详细信息,请参见第12章。

  会话A可读和写作字典对象表示当前的会话。当Django激活会话支持时,这是有效的。请参阅第12章。

  RAW_POST_DATA发布原始数据。用于数据的复杂处理。

  请求对象还包含一些有用的方法,请参见表H-2。

  表H-2。httprequest方法

  方法

  描述

  __getItem __(键)

  请求的get/post值,首先找到帖子,然后获取。如果密钥不存在,则会导致异常的钥匙孔。

  此方法允许用户通过访问字典访问HTTPRequest实例。

  例如,请求[“ foo”]并在检查request.get [“ foo”]之前检查request.post [“ foo”]。

  has_key()返回对还是错,以识别request.get.get或request.post。

  get_full_path()返回路径。如果请求字符串有效,则将连接到它。例如,“/music/bands/the_beatles/?print = true”。

  is_secure()如果请求是安全的,请返回true。换句话说,请求以HTTPS的形式提交。

  查询对象

  在httprequest对象中,获取和帖子属性是django.http.querydict.querydict的示例,是一个类似于字典的类,该类专门用于处理键的多值。该类需要处理该类需要处理某些元素,以处理某些元素。HTML形式,尤其是在选择多个传递相同密钥时传达相同键的元素时。

  翻译...

  querydict实例是不可变的,除非创建了副本()副本。

  Querydict实现了所有标准字典的方法,因为它是字典的子类。表H-3中列出了不同的内容。

  表H-3。查询和标准词典

  方法

  与标准字典实施不同

  __getItem__与字典相同。但是,当键具有多个值时,__getItem __()返回最后一个值。

  __setItem__将密钥的值设置为[值](仅一个值元素的Python列表)。注意,由于在其他字典函数上存在副作用,因此只能称为变量QueryDict(由COPY(COPY()创建)。

  get()如果一个键多数值,例如__getItem__,get()将返回最后一个值。

  更新 ()

  该参数是querydict或标准字典。标准词典

  更新不同,此方法*增加*而不是替换内容:

  q = querydict('a = 1')

  q = q.copy()#使其可更改

  q.update({'a':'2'})

  Q.GetList('a')

  ['1','2']

  问['a']#返回最后一个值

  ['2']

  项目 ())

  像标准字典的tocke()方法一样,区别在于它与__getItem()__相同,并返回最后一个值:

  q = querydict('a = 1a = 2a = 3')

  q.items()

  [('a','3')]

  值()与标准字典的值()方法相同。区别在于它将最后一个值返回为__getItem()__。

  此外,Querydict在表H-4中列出了一种方法。

  表H-4。附加(合成)Querydict方法

  方法

  描述

  copy()返回python标准库中使用copy.deepcopy()对象的副本。此副本是可变的,也就是说,您可以更改其值。

  getList(键)以python列表的形式返回请求密钥的数据。如果键不存在,请返回空列表。它保证它将返回一定的列表。

  setList(key,list_)将密钥的键值设置为list_(不同于__setitem __())。

  AppendList(键,项目)在密钥相关列表中添加了项目。

  setListDefault(key,l)与setDefault相同。区别在于其第二个参数是列表,而不是值。

  列表()

  像项目()一样,区别在于它在列表的列表中返回字典中每个成员的所有值。例如:

  q = querydict('a = 1a = 2a = 3')

  q.lists()

  [('a',['1','2','3']]]

  urlencode()以请求字符串格式返回数据字符串(例如“ a = 2b = 3b = 5”)。

  一个完整的例子

  例如,给定此HTML表格:

  形式action =“/foo/bar/” method =“ post”

  输入类型=“ text” name =“ your_name” / / /

  选择多重=“多个”名称=“ band”

  选项值=“甲壳虫”披头士乐队/选项

  选项值=“谁” WHO/选项

  选项值=“僵尸”僵尸/选项

  /选择

  输入类型=“提交” / /

  /形式

  如果用户在your_name中输入“ John Smith”,然后在多项选择帧中选择甲壳虫乐队和僵尸,则以下是Django请求对象的所有者:

  request.get

  {}

  request.post

  {'Your_name':['John Smith'],'bands':['Beatles','Zombies']}}}}

  request.post ['your_name']

  '约翰·史密斯'

  request.post ['bands']

  “僵尸”

  request.post.getList('bands')

  ['甲壳虫乐队','僵尸']

  request.post.get('your_name','adrian')

  '约翰·史密斯'

  request.post.get('nonexistent_field','无处男人')

  “无处男人”

  使用时请注意:

  获取,发布,cookie,文件,元,请求,RAW_POST_DATA和用户被延迟加载。换句话说,除非它们在代码中访问它们,否则Django不会花费资源来计算这些属性值。

  1. Django获得多个关键值来自帖子:

  阿贾克斯:

  var语言= {};

  语言['英语'] = ['mark','james'];

  语言['Spanish'] = ['Amy','John'];

  $ .ajax({{{{{{

  类型:'post',

  URL:'/save/',,

  数据:语言,

  数据类型:'json'

  });

  django Views.py

  如果request.is_ajax()和request.method =='post':

  对于request.post中的键:

  打印键

  valuelist = request.post.getList(key)

  印刷valluelist

  -----------------------------------

  Fidder:

  名称=六月;年龄= 26;

  -----------------------------------

  Views.py

  16

  对于请求中的键。

  request.post.getList(key)19印刷valuelist

  ----------------------------------------------------------------------------------------------------------------

  发展

  服务器正在退出服务器

  控制-C。您的方法是帖子!姓名

  [u'june']

  年龄[U'26'] [04/APR/2012 10:58:11]“ post/getuin/http/1.1” 200 20 20 20

  2.一次加载所有值:

  def View_example(请求):

  data = simplejson.loads(request.raw_post_data)

  结论:以上是为Django如何获取请求请求请求的所有内容的首席CTO注释的所有内容。感谢您花时间阅读本网站的内容。我希望它对您有帮助。有关Django如何与请求请求有关的信息,请不要忘记在此站点上找到它。