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

如何处理Django中的动态表(2023年最新完成)

时间:2023-03-06 22:06:25 网络应用技术

  简介:许多朋友询问了Django如何处理动态表。本文的首席CTO笔记开始为您的参考做出详细的答案。我希望这对每个人都会有所帮助!让我们一起看看!

  您仍然没有做类似的事情。有很多方法。最简单的是设置ID。每行的设置为str(索引+1)类似。

  编辑设置:

  Media_root和Media_url表示用户上传的文件。它可以理解为存储可变文件的文件夹。

  这两个参数的用途是什么?

  在诸如Django的FileField和ImageField之类的模型类中,有upload_to参数可供选择。

  上传文件后,它将自动保存到:OS.Path.join(Media_root,upload_to)。在此示例中

  Media_url表示用户可以通过可以访问的URL访问这些上传的文件资源。

  在此示例中,该计算机的地址为:

  然后通过:文件名可以访问相关的上传图片或其他文件。

  static_root和static_url是网站上使用的静态图片,CSS,JS和其他文件的保存地址。可以理解,网站操作期间将不再更改文件的文件夹删除或添加)

  static_url,类似于Media_url;当setter_url为“/static/”时,通过:文件名可以访问相关的静态文件。

  static_root是一个相对特殊的文件夹。这是Django的开发模型与部署模型最不同的地方。

  通常,在开发模式下,我们可以在我们的项目下建立相应的应用程序,然后在每个应用程序下设置相应的静态文件夹。在DEBUG = true中,Django将自动为我们找到这些静态文件(每个应用程序)并在WebPage.ever,在部署模式下,Django认为这些任务更有效地由Web服务器运行。

  因此,部署时,我们需要运行:

  此命令将将每个应用程序中的文件复制到静态目录的文件为static_root文件夹。

  如果在部署模式下,(debug = false)访问相关的网页(例如:文件名,将无法访问django下的每个应用程序中的静态文件夹,而是在static_root中指定的文件夹。

  为了在部署模式下正确使用它,我们还需要将以下内容添加到URLS.PY:

  这相当于在“静态”开头的链接时告诉如何处理Django。

  理解上述内容后,让我们在前端显示图片。

  编写显示视图功能以传递动态图片:

  然后写show.html:

  Django的ORM系统不支持删除字段的操作,这意味着当您编写模型模型文件时,定义了此用户表,然后字段telphone定义将表结构写入数据库。如果删除模型文件的电信,则不会对数据库进行修订。这次,您必须使用本机SQL来求解它,也就是说,必须为DJANGO编写SQL语句才能执行它。在这种情况下,会有很多问题,这意味着在执行Alter Table用户删除列telphone之后,您的模型文件不知道您已经使用了用户来使用用户。Django应用程序的崩溃。因此,动态字段并不容易。这也可能是我可以浅薄地学习。我不太了解。也许有些人可以做到。但是尽量不要尽可能多地删除字段。

  1.在Excel文件CTRL+C2中选择所需的部分。打开

  插画家

  新文件(较大),CTRL+V3。在Illustrator中,每个部分分开,文本是文本,表格为表4。打开PS并将Illustrator的内容拖到PS中以形成矢量智能图(任意扩大,不是不令人满意的,看来无法编辑)5。我试图认为此方法是可行的,所以我会分享总结后与网民一起使用。

  提供一个想法。我没有尝试过,我不知道它是否可行。将表的抽象结构定义为模型,但请记住添加

  元类:

  摘要= true

  好吧,您将获得模型的抽象类。当SynCDB时,不会构建抽象类。

  然后,编写一个根据日期动态生成动态类的东西。例如,您的抽象称为myModel。

  def gen_model_by_date(dt = none):

  如果DT没有:

  dt = dateTime.dateTime.today()

  new_model_name ='mymodel_ {d}'。格式(d = dt.strftime('%y%m%d'))

  new_model = type(new_model_name,(mymodel,),{}),{})

  返回new_model

  然后,在此表的所有逻辑中,此方法用于替换原始模型。

  Django代码应由此决定。

  来自django.utils.translation importettext_lazy as _

  从django导入表格

  来自django.forms.formsets导入baseformset

  来自django.forms.fields导入文件

  来自django.forms.util导入验证eRROR

  来自django.shortcuts导入render_to_response

  来自django.contrib.formtools.wizard导入formwizard

  来自ddtcms.office.equipment.models进口设备,特征,特征值

  类设备形式(forms.modelform):

  元类:

  型号=设备

  类特征valueform(forms.form):

  def清洁(自我):

  a = seld.fields

  s = seld.data

  self.clenet_data = {}

  #以下段落从django的Full_Clean中复制

  为了姓名,在self.fields.items()中字段:

  #value_from_datadict()从数据字典中获取数据。

  #每个小部件类型都知道如何返回自己的数据,因为有些

  #小部件将数据划分为SEERAR HTML字段。

  值= field.widget.value_from_datadict(self.data,self.files,self.add_prefix(name))

  尝试:

  如果IsInstance(字段,FileField):

  初始= self.initial.get(name,field.initial)

  value = field.clean(值,初始)

  别的:

  value = field.clean(value)

  self.clenet_data [name] =值

  如果hasattr(self,'clean_%s'%名称):

  value = getttr(self,'clean_%s'%name)()()

  self.clenet_data [name] =值

  除了验证Error,E:

  self._errors [name] = self.error_class(e.messages)

  如果在self.clenet_data中名称:

  del self.clenet_data [名称]

  #cl = self.clenet_data

  #debug()进行调试,检查Cl的值,主要是查看self.clenet_data的值。

  返回self.clenet_data

  类设备CreateWizard(formwizard):

  def完成(self,request,form_list):

  返回render_to_response('设备/DONE.HTML',,

  {{{

  'form_data':[form.clenet_data for form_list],

  })

  def get_form(self,step,data = none):

  “为给定步骤返回表单实例的帮助方法。”

  form = self.form_list [step](data,prefix = self.prefix_for_step(step),初始= self.initial.get(step,none))

  如果步骤== 1:

  如果数据:

  cg = data.get('0类别',1)

  cs = trunication.objects.all()。过滤器(类别__ID = CG)

  对于CS中的C:

  form.fields ['特征 - '+str(c.id)] = forms.charfield(label = c.name)

  g = form.fields

  #debug()

  返回表格

  #从wizard.py复制以更改它。

  def渲染(自我,表单,请求,步骤,上下文=无):

  “渲染给定的形式对象,返回httpresponse。”

  old_data = request.post

  prev_fields = []

  如果old_data:

  hidden = forms.hidendinput()

  #从上述步骤中收集所有数据,并将其作为HTML隐藏归档。

  对于我的范围(步骤):

  old_form = self.get_form(i,old_data)

  hash_name ='hash_%s'%i

  prev_fields.extend([bf.as_hiddddddddddddddddddd()for bf in old_form]))))))))

  prev_fields.append(hidden.render(has_name,old_data.get)

  如果步骤== 1:

  cg = old_data.get('0类别',1)

  cs = trunication.objects.all()。过滤器(类别__ID = CG)

  对于CS中的C:

  form.fields ['特征 - '+str(c.id)] = forms.charfield(label = c.name)

  g = form.fields

  #debug()

  如果步骤== 2:

  debug()

  返回超级(设备CreateWizard,Self)。渲染(表单,请求,步骤,上下文=无)

  def get_template(self,step):

  返回'设备/wizard_%s.html'%步骤

  设备CreateWizard实际上可以放置在Views.py中,我认为这更合理。

  在EquipmentCreateWizard中,我尝试修改Process_Step函数,但没有得到正确的结果。后来,我修改了get_form。我想从django的formtools的wizard.py复制,然后对其进行修改。

  GET_FORM的修改没有得到正确的结果。后来,修改了渲染函数。在步骤2中,我显示了动态参数的数量。没有数据,它是一个空{},

  因此,我再次重新修改了get_form函数,无非是判断它是否是第二步,然后在第二个表单中添加一些字段:

  1

  2

  3

  4

  5

  6

  7

  如果步骤== 1:

  cg = old_data.get('0类别',1)

  cs = trunication.objects.all()。过滤器(类别__ID = CG)

  对于CS中的C:

  form.fields ['特征 - '+str(c.id)] = forms.charfield(label = c.name)

  g = form.fields

  #debug()

  此代码可在get_form和渲染中使用。两者都经过判断是否是第二步,然后根据步骤1中选择的设备的分类查询特定分类,然后根据分类获得分类设备。哪个参数,然后修改字段的参数数量根据参数数量。

  “特征 - ”+str(c.id)用于保存将来的数据,拆分字符串,获取参数的ID,并保存特征-1,特征-2 ...中的值桌子。

  g = form.fields

  #debug()

  它用于检查存在多少个参数,无论它是成功修改的。

  =====================

  1

  2

  3

  4

  5

  6

  7

  8

  9

  来自django.conf.urls.defaults导入 *

  来自DDTCMS.Office.Equipment.Forms Import Equience Form,特征值,设备CreateWizard

  urlpatterns =模式('ddtcms.office.equipment.views',

  url(r'^$','索引',name =“ demoperic_index”),

  url(r'^add/$','equipment_create',name =“ equibl_create”),

  URL(r'^添加键/$',设备CreateWizard

  上面的代码CSDNBOLG自动过滤了$符号,我补充说,可能有问题。

  ======================

  wizard_0.html

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  {%阻止内容%}

  H2添加/修改设备向导/H2

  p辅助{step}}步骤,总共{step_count}}步骤https://www.shouxicto.com/article/p

  P填充设备/P的基本情况

  表单方法=“ post” action =“ {%csrf_token%}

  桌子

  {形式}}

  /桌子

  输入type =“隐藏”名称=“ {step_field}}”值=“ {step0}}” / / / /

  {pronos_fields |安全的}}

  输入类型=“提交”值=“提交” /

  /形式

  {%endBlock%}

  =================

  wizard_1.html

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  {%阻止内容%}

  H2添加/修改设备向导/H2

  p辅助{step}}步骤,总共{step_count}}步骤https://www.shouxicto.com/article/p

  p填写设备参数,如果没有内容要填充,请单击“确定” https://www.shouxicto.com/article/p

  表单方法=“ post” action =“ {%csrf_token%}

  桌子

  {形式}}

  /桌子

  输入type =“隐藏”名称=“ {step_field}}”值=“ {step0}}” / / / /

  {pronos_fields |安全的}}

  输入类型=“提交”值=“提交” /

  /形式

  {%endBlock%}

  ==================

  完成了.html

  1

  2

  3

  4

  5

  6

  7

  8

  {%阻止内容%}

  H2添加/修改设备向导/H2

  P,您已成功添加了设备https://www.shouxicto.com/article/p

  {form_data}}

  {%endBlock%}

  ===========

  您还可以使用另一个FormWizard,即第一个Form1,主要用于允许用户选择设备的分类。FOMM2根据上一个动态生成参数的形式。原理是一样的。原理是一样的。原理是一样的。

  有两种观点要模拟Formwizard。添加第一个视图以添加设备。设备的设备ID的第二个视图足够,可以有效地增加设备的参数。

  结论:以上是首席CTO注释为每个人编写的Django的全部内容。