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

如何构建变量列表或字典(Django添加数据库字段)

时间:2023-03-09 12:14:26 网络应用技术

  简介:今天,首席CTO注释要与您分享如何构建有关Django如何构建列表或词典的可变列表或字典。如果您能解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!

  用户名出现在TeamCola的每个页面的右上角,但是如果在每个视图方法中使用了常规方法,则如果您通过Render_TO_TO_RESPONSE方法将用户数据注入用户数据,则将执行很多重复的工作,则就像以下内容一样:def views_meth3(请求):return render_to_response('template_3.html',{'user':request.user})#...剩下的n方法。注射,或者您需要通过一些其他计算生成,这是麻烦的。因此,如何避免重复您的2B模式?我们可以选择以下模型:每次创建一个新的Django项目时,通常我们都会创建一个工具模块类似于root Directory中的utils.py。渲染方法在每个模板的渲染中注入指定的全局变量:#in utils.py:def mp_render(请求,template,context = {}):context ['user'user] = request.user resto_responseviews_meth3(请求):返回mp_render(请求,'template_3.html')已被充分理解。这样,如果将来全局变量有新的增加,您只需要修改MP_Render方法。嗯,这是一种非常常见的方法。由于这是一种常见的方法,所以让我们有一个文学上的观点。LET查看Django文档中render_to_response方法的定义。在“必需的参数”中,有此方法的第三个参数,称为Context_Instance。此参数的描述如下:渲染测试的上下文实例您需要使用requestContext对象呈现模板。“那么上下文处理器是什么?阅读了本文档的定义后,一切都应该清楚。首先,您需要了解,在Django模板系统中,包装模板变量有两种类型,一个是Django.template。 我们的威利特被这个上下文类封装,然后传递给模板。另一个是django.template.requestcontext,与上下文类相比有两个区别。第一个是区别时,当生成requestContext变量时,您需要将httprequest对象作为第一个参数作为C = requestContext(请求,请求,,,,,,,,{'foo':bar',})第二个区别是,它将添加一些自动自动自动变量,这些变量在哪里注入了模板的变量?settings.py in django In django in django in django in template_context_processors配置。此配置中的TPLE元素实际上是一种可以一个一个称为的方法。这些方法将接收一个httprequest对象作为参数,最后返回字典。本字典中的元素将成为一个变量,可以自动将模板注入requestContext中。Auth方法,包括三个元素,因此,如果使用Render_to_response方法,则传递第三个请求context参数,然后在其渲染的模板中,它可以与相应的用户,消息,perms变量。因此,最后一个文学解决方案是在需要注入全局变量的每个视图方法中,当调用render_to_response时,它将传递到第三个requestContext对象参数:def views_meth1(request):d1 = {'method':1flexibility较高且易于展开。在一般项目开发中,我个人认为普通方法足够了,因此请根据项目选择。

  首先,很明显,CMD命令行下的环境变量的修改仅对当前窗口有效,而不是永久修改。。有两种方法可以永久修改环境变量:一个是直接修改注册表,另一种是通过我的计算机 - >属性 - >高级来设置系统的系统变量

  显示,设置或删除cmd.exe环境变量。

  设置[variable = [string]]]

  变量指定环境变量名称。

  字符串指定一系列的字符串分配给变量。

  要显示当前环境变量,请键入无参数的设置。

  1.查看所有当前的环境变量:输入设置为查看。

  2.查看某个环境变量:例如,输入“设置变量名称”,例如,您要查看路径变量的值

  在Django中,管理数据库类似于SQLARCHEMY,并通过ORM框架实现。所有数据库的建立均在Model.py中实现。

  首先查看如何创建一个表:

  A。首先定义类,继承模型。模型,然后根据要求定义参数。这些参数的类型和变量将在以后进一步说明

  模型

  来自django.db导入模型

  类UserInfo(models.model):

  用户名= models.charfield(max_length = 32)

  密码= models.charfield(max_length = 64)

  b。注册应用程序

  settings.py

  instasted_apps = [[[

  ‘django.contrib.admin’,

  ‘django.contrib.auth’,

  ‘django.contrib.contenttypes',

  'django.contrib.sessions',

  ‘django.contrib.messages',

  ‘django.contrib.staticfiles’,

  “ app01”,

  这是给予的

  C。execute命令。第一个命令将生成一个初始化文件,第二个命令将生成相应的表

  python manage.py makemigrations

  python manage.py迁移

  这样,PyCharm随附的SQLite数据库中成功生成了App01_userinfo的表。该表将以自我信息为主键,而我们的其他两个字段由我们通过类创建。

  d。如果要使用MySQL,因为Django默认使用MySQLDB模块,因此在版本3.0中不存在此错误,因此它将直接报告错误。我们需要更改为PymySQL的模块。该方法如下:

  将以下代码添加到同名文件夹的文件夹下的__init__文件:

  导入pymysql

  pymysql.install_as_mysqldb()

  2.查询添加,删除,更改单个表的查询

  查询

  获取所有结果,获得的结果是类似QuerySet列表的对象。每个元素本身都是一个对象,包括ID,名称,密码和其他属性。

  obj = model.userinfo.objects.all()

  querySet [UserInfo:UserInfo对象,UserInfo:UserInfo对象,UserInfo:UserInfo对象,UserInfo:UserInfo Object,userInfo:userInfo:userInfo Object]

  它可以通过过滤器过滤,这相当于SQL的语句,因为结果也是querySet,因此您需要使用第一个()来获取第一个值

  obj = model.userinfo.objects.filter(id = nid).first()

  增加

  models.userinfo.objects.create(用户名= u,password = p,user_group_id = 3)

  删除,您可以根据过滤器删除它

  models.userinfo.objects.filter(id = nid).delete()

  有两种常见的修改方法

  第一条方法

  models.userinfo.objects.filter(id = nid).update(用户名= u,password = p)

  第二种方式

  obj = model.userinfo.objects.filter(id = nid)

  obj.username = u

  obj.save()

  问题在于测试= 1实际定义了局部变量测试,该测试隐藏了全局范围中的测试变量。

  为了指示全局测试变量的使用,您需要使用全局关键字。

  来自django.http导入httpresponse

  测试= 0

  DEF A(请求):

  全球测试

  测试= 1

  返回httpresponse('查看a:test =%d'%测试)

  DEF B(请求):

  全球测试

  测试+= 1

  返回httpresponse('视图B:test =%d'%测试)

  范围:

  儿童 - 应使用列表中对象的字段实例。如果未提供此参数,则将未验证列表中的对象。

  min_length-验证列表中包含的元素不小于此数字。

  max_length-验证列表中包含的元素数不超过此数字。

  范围:

  Child-应该用于验证字典中介质值中的字段实例。如果未提供此参数,则将无法验证映射的值。

  laster_empty-指定是否允许一个空词典。

  源代码

  改写DICSFIELD TO_REPRESTATION方法的解决方案

  有时,我们需要一些变量来使用模板模板页面。这些变量在views.py.py.py.py.the.cy中没有返回设置。例如,以下代码:

  #编码:UTF-8

  从django.shortcuts导入渲染

  DEF索引(请求):

  上下文= {}

  上下文['title'] ='测试标题'

  返回渲染(请求,'index.html',上下文)

  以上是views.py.t的方法之一。如下:

  html

  头/头

  身体

  H3 {title}}/H3

  p是否登录:{{request.user.is_authenticated}/p

  /身体

  /html

  除标题变量值外,响应结果还具有是否登录。登录信息来自请求变量。问题在于,请求变量未写入views.py.pys.pys.py的上下文中,并且模板不必获取变量。

  当时这并不是一无所有。我逐步进行分析。解释原理后,您自然了解如何设置模板的全局变量或默认变量。

  渲染方法是render_to_response的简短方法。上面的views.py代码等同于以下内容:

  #编码:UTF-8

  来自django.shortcuts导入render_to_response

  来自django.template导入requestContext

  DEF索引(请求):

  上下文= {}

  上下文['title'] ='测试标题'

  返回render_to_response('index.html',context,requestContext(request))

  如果删除了render_to_response的第三个参数,则requestContext(请求)部分。

  index.html模板页面的值无法获得{{request.user.is_authenticatiencation}},也就是说,没有请求变量传递到首页。很明显requestContext至关重要。

  RequestContext的内容可从官方Django文档中找到。

  此类将分析设置模板设置中的Context_Processors配置。新的Django Project settings.py文件中的默认模板设置如下:

  模板= [

  {{{

  '后端':'django.template.backends.django.djangotemplates',

  'dirs':[],

  'app_dirs':是的,

  '选项': {

  'Context_Processors':[

  'django.template.context_processors.debug',

  'django.template.context_processors.request',

  'django.contrib.auth.context_processors.auth',

  'django.contrib.messages.context_processors.messages',,

  ] ,,,,

  },,

  },,

  这是给予的

  每个人都可以发现Context_Processors具有一系列设置,其中Django的源代码是根据Django.template.context_processors.request找到的。

  Django安装在Python安装目录中的LIB/SITE包装/目录中。查找django/template/context_processors.py文件。打开它时,您可以看到请求方法:

  DEF请求(请求):

  返回{'请求':请求}

  此方法返回字典,键是请求,而值是请求对象。显然,渲染中的请求对象是通过在设置中加载context_processors list方法来获取字典项目。

  我们还可以使用此方法为Django项目设置一个全局模板变量。例如,我的Django名称是myProject,并在myproject/myproject目录中创建Contexts.py文件。代码如下:

  #编码:UTF-8

  来自django.conf导入设置

  #置

  def lang(请求):

  返回{'lang':settings.language_code}

  该文件的方法需要请求参数,最后您需要返回字典。

  再次打开settings.py文件,添加刚刚用模板编写的方法:

  模板= [

  {{{

  '后端':'django.template.backends.django.djangotemplates',

  'dirs':[],

  'app_dirs':是的,

  '选项': {

  'Context_Processors':[

  'django.template.context_processors.debug',

  'django.template.context_processors.request',

  'django.contrib.auth.context_processors.auth',

  'django.contrib.messages.context_processors.messages',,

  #customized模板全局变量(默认变量)

  'myproject.contexts.lang',

  ] ,,,,

  },,

  },,

  这是给予的

  添加全局变量后,我们可以使用该变量,而无需在任何位置上手动编写相关代码以渲染模板页面。

  结论:以上是有关Django如何构建可变列表或与字典相关的内容的主要CTO注释。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?