====启动django====

python manager.py runserver --host 0.0.0.0 --port 9008

python manager.py runserver --help可以查看所有的选项

python manager.py runserver --host 0.0.0.0 --port 9008 --setting=fms/settings_dev

这里可以用setting变量,设置环境信息,比如dev,test,production等

====1【request】http输入层====

【request获取GET参数】
id = request.GET.get('id')
print(id)

【request获取POST参数】

name = request.GET.get('name')
print(name) #获取复选框的多个值
ids = request.POST.getList('ids[]')
print ids #打印到文件
fp = open(file, 'a+')
for id in ids:
fp.write(str(id) + "\n")
fp.close()

====2【模板】django模板====

(16)spaceless 使用形式:{% spaceless %} (内容) {% endspaceless %} 意义:删除包围内容中的所有tab或者回车字符。

(22)linebreaks 使用形式:{{value|linebreaks}} 意义:value中的"\n"将被<br/>替代,并且整个value使用</p>包围起来,从而适和HTML的格式
(23)linebreaksbr 使用形式:{{value |linebreaksbr}} 意义:value中的"\n"将被<br/>替代

===关闭了Django的自动转义===
我们还可以通过{%autoescape off%}的方式关闭整段代码的自动转义,比如下面这样:

{% autoescape off %}
Hello {{ name }}
{% endautoescape %}

如果choices是数组,[,,,]
{% for choice in choices %}
{{choice.choice}} - {{choice.votes}} <br />
{% endfor %} 如果choices是dict,{a:, b:, c:}
{% for k,v in choices.items %}
<option value="{{k}}">{{v}}</option>
{% endfor %}
循环遍历参考文章:https://docs.djangoproject.com/en/2.1/ref/templates/builtins/

====3【response响应】====

【response】render和render_to_reponse区别

https://www.cnblogs.com/leonwen/p/5368239.html

如何将数据化后的模板返回到string中在程序中使用

from django.template.loader import render_to_string
str = render_to_string('f/project_search_list.html', data)

====4【DB】django db操作====

db = Project(project_id=1, content_id=1)
db.save()
#return

db = Project.objects.filter(project_id=1)
db.delete()
return

[DB细节]获取insert后的id

>>> b2 = Blog(name='Cheddar Talk', tagline='Thoughts on cheese.')
>>> b2.id # Returns None, because b doesn't have an ID yet.
>>> b2.save()
>>> b2.id # Returns the ID of your new object. #有判断插入是否成功
#假设b2.id是UUID类型,则使用如下判断
if str(b2.id) == '':
  insert_id = b2.id
#假设b2.id是int类型,且设置了默认值是0,则使用如下判断
if int(b2.id) == 0:
  insert_id = b2.id

参考链接:https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#auto-incrementing-primary-keys

【DB】多个搜索条件(包含like)

object = Project.objects
if request.GET.get('name'):
object = object.filter(name__contains=request.GET.get('name'))
if request.GET.get('domain'):
object = object.filter(domain__contains=request.GET.get('domain'))
if request.GET.get('system_type') and request.GET.get('system_type') != '':
object = object.filter(system_type=int(request.GET.get('system_type')))
if request.GET.get('project_depart') and request.GET.get('project_depart') != '':
object = object.filter(project_depart=int(request.GET.get('project_depart')))
if request.GET.get('level') and request.GET.get('system_type') != '':
object = object.filter(level=int(request.GET.get('level')))
if request.GET.get('project_leader'):
object = object.filter(project_leader__contains=request.GET.get('project_leader')) Projects = object.all() #这里需要注意两点:,每次filter之后,都需要重新赋值到object;,如果有like操作,则要使用field_name__contains这个约定写法来完成like(这里包含两个下划线,不是一个);

[DB细节]更新逻辑

【model层写逻辑】
----mysql update---
patient_edit = PatientInfo.objects.get(id=patient_id) # object to update
patient_edit.name = 'New name' # update name
patient_edit.save() # save object

https://my.oschina.net/esdn/blog/803135

====5【service】业务逻辑层====

【service】其它

@login_required
@permission_required('accounts.add_project',raise_exception=True)
def project_add(request): if request.method == "POST":
form = ProjectForm(request.POST)
print(form)
if form.is_valid():
form.save()
else:
form = ProjectForm()
return HttpResponseRedirect(reverse('project_list')) 以上代码段中有几个关键函数,post传递参数,然后保存到数据库中
ProjectForm来组form数据,form.save()保存在数据库中 我们不需要组数据,我们需要的提取数据的信息 charField
Z:\dev\project\git\fms.xin.com\fms.xin.com\venv\lib\python3.\site-packages\django\db\models\fields\__init__.py django中对字段的设定,哪些是必填的,哪些是可以为空的
https://www.cnblogs.com/linxiyue/p/3662535.html
https://django-chinese-doc.readthedocs.io/zh_CN/latest/ref/models/fields.html

====附录,python文件操作====

http://www.runoob.com/python/python-files-io.html

python:django的更多相关文章

  1. Python:Django【基础篇】

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  2. python:Django 简介。

    Django是基Python的重要WEB框架. 1.安装Django Web框架 安装  pip 安装 在命令行模式 执行  [pip install django == 2.0]或者 [pip in ...

  3. Python:Django 项目中可用的各种装备和辅助

    1 Redis 数据库 2 MySQL 数据库 3 前端服务器 live-server 4 定时任务 django-crontab扩展 5 Docker 容器 --用来运行 FastDFS 分布式文件 ...

  4. Python之路【第十九章】:Django 数据库对象关系映射

    Django ORM基本配置 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去 ...

  5. Python之路【第十八章】:Django基础

    Django基本配置 Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Se ...

  6. Python之路【第十七篇】:Django【进阶篇 】

    Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

  7. Python之路【第十六篇】:Django【基础篇】

    Python之路[第十六篇]:Django[基础篇]   Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了O ...

  8. Python之路【第十七篇】:Django之【进阶篇】

    Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

  9. Python之路【第十七篇】:Django【进阶篇】

    Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

随机推荐

  1. 【JEECG技术文档】Jeecg高级查询器

    1. 背景 对于用户来讲查询功能按易用性分三个层次: 1)最简单查询操作是一个输入框,全文检索,如百度,后台实现技术使用搜索引擎,需要设计和建立索引,技术较为复杂,适用于文档和信息数据库检索,但是结果 ...

  2. Spring boot 定制自己的错误

    1).如何定制错误的页面: ​ 1).有模板引擎的情况下:error/状态码; [将错误页面命名为 错误状态码.html 放在模板引擎文件夹里面的 error文件夹下],发生此状态码的错误就会来到 对 ...

  3. maven插件之checkstyle

    checkstyle的eclipse插件已经在eclipse中有讲过,用于开发者自查用.但是不能保证开发者能按照checkstyle进行改正或者自查,因此就需要对未checkstyle通过的代码不能编 ...

  4. python字符串查找

    a = "string test" a.index("g") a.find("g")

  5. Python 数据结构基本操作

    数据结构是用来存储数据的逻辑结构,合理使用数据结构才能编写出优秀的代码.本文主要介绍Python提供的几种内置数据结构,包括元组.列表.字典的定义和基本操作方法以及介绍典型函数的使用方法. 元组结构 ...

  6. Structs复习 OGNL

    Dominmodel只有传 User.age 类似的这种Structs才能帮创建对象 Dominmodel User里必须有空的构造方法 OGNL:OBJECT GRAPHIC NAVAGATION ...

  7. StarRatingBar星星切换动画《IT蓝豹》

    StarRatingBar星星切换动画 StarRatingBar星星切换动画,很久没有学习一下这个RatingBar了,今天来看看这个RatingBar的动画切换效果,本例子主要是RatingBar ...

  8. 最小生成树二·Kruscal算法

    描述 随着小Hi拥有城市数目的增加,在之间所使用的Prim算法已经无法继续使用了——但是幸运的是,经过计算机的分析,小Hi已经筛选出了一些比较适合建造道路的路线,这个数量并没有特别的大. 所以问题变成 ...

  9. webstocket 聊天

    /** * 初始化socket **/ function initSocket(index_host){//端口号 if( !window.WebSocket ){ console.log(" ...

  10. linux中awk命令学习

    awk是一个强大的文本分析工具,awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. 通常获取某一行时,我们会使用 “grep 关键字“进行查找,但在读取某一列时, ...