用到的命令

1.创建项目
django-admin startproject myBlog

2.创建app
cd [项目名]
python3 manage.py startapp blog 3.数据迁移
python3 manage.py makemigrations
python3 manage.py migrate (修改modes.py文件之后需要执行 之前的版本是python3 manage.py syncdb) 4.运行服务 python3 manage.py runserver
5.创建管理员
python3 manage.py createsuperuser 6.
查看sql语句
python3 manage.py sqlmigrate 应用名 文件id 

7.进入python交互模式 
 python3 manage.py shell

路由分发:

根目录中 urls.py文件
urlpatterns = [
path('admin/', admin.site.urls),
# path('', bv.index),
path('index/', include('blog.urls')),
] 在浏览器中这样访问:http://127.0.0.1:8000/index/
include的作用是防止app过多时 urls.py文件太复杂 
# path参考 https://blog.csdn.net/qq_26024867/article/details/79679329
URL对应可以有参数,例如:
url(r'^index/', views.index, {'name': 'root'}),然后在views.py中写的时候记得加上一个名为name的参数:
def index(request, name):
print(name)
return HttpResponse("OK") 这样就会打印出root

template中{{ key }} 的作用是 接收后端传递的dict数据{key:value}

template下面再用app名字分级的作用是区分不同app中引用的index.html

模版语言:

一般在views.py的一个逻辑函数,都会return ... 比如

return render(request,"HTML模板的路径", {'obj':1234,'k1':[1,2,3,4],'k2':{'name':'root','age':19}})

在html文件中取值:

取单值:
{{ obj }} 取列表元素
{{ k1.0 }} 取字典中的元素
{{ k2.name }} 循环取列表
{% for i in k1 %}
{{ i }}
{% endfor %} 循环取字典
循环keys
{% for row in k2.keys %}
{{ row }}
{% endfor %} 循环values
{% for row in k2.values %}
{{ row }}
{% endfor %} 循环key和value
{% for k,v in k2.items %}
{{ k }}-{{ v }}
{% endfor %}

Django的生命周期

路由系统  -> view.py (获取模板+数据->渲染)-> 返回str  
获取用户请求的数据:
request.POST.get() request.GET.get() request.FILES.get() ...............getlist() 上传文件 obj = request.FILES.get("文件名")
obj.name #文件名
obj.size #上传文件的字节
obj.chunks #分块取数据 要上传文件时候要在form表单加入特殊的设置 返回数据:
1.redirect("URL")
2.render(request,"HTML模板的路径", {用于渲染的字典})
3.HttpResponse("字符串")
<input type= name= value=>标签
type=text 表示文本
type=submit 表示提交
name= 表示该元素名称
value= 该标签上显示的内容
<form action= >
action 是一个URL类型,规定当提交表单时向何处发送表单数据。
 Cross-site request forgery  也就是csrf 的两种避免方法:
1. 在form表单中加 {% csrf_token %}
2. 注释setting,py 中的
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

最新文章

  1. Tomcat关闭日志catalina.out
  2. js 时间与时间戳的转换
  3. CI控制器中设置在其它方法中可用的变量
  4. WCF Data Service 使用小结(二) —— 使用WCF Data Service 创建OData服务
  5. 12. 求简单交错序列前N项和
  6. dubbo源码之一——xml schema扩展
  7. HDU 5818 Joint Stacks(联合栈)
  8. JMeter笔记4:测试结果-聚合报告的字段说明
  9. grails中报Cannot create a session after the response has been committed异常的解决办法
  10. Awk中调用shell命令
  11. robotframework-FQA
  12. WdatePicker日历控件使用方法(转)
  13. Jmeter3.2版本中Generating Report Dashboard功能浅析
  14. oracle有三种类型的异常错误: 预定义 ( Predefined )错误里面的常见错误
  15. 011_如何decode url及图片转为base64文本编码总结
  16. [转帖]Huge Page 是否是拯救性能的万能良药?
  17. Cookie和Seesion
  18. Scala构建工具SBT
  19. 把旧系统迁移到.Net Core 2.0 日记(10) -- EF core 和之前版本多对多映射区别
  20. node服务端搭建学习笔记

热门文章

  1. AppStore IPv6-only 解决--看我就够了
  2. 必须Mark!43个优秀的Swift开源项目推荐(转)
  3. Jmeter之正则表达式提取器
  4. js中ajax请求返回的数据处理成数组后,局部变量赋值给全局变量后,为空
  5. 实验报告一&amp;第三周学习总结
  6. Spring MVC @RequestBody自动转JSON HTTP415错误解决方法
  7. [19/05/16-星期四] HTML_body标签(表格标签)
  8. TFS版本对应
  9. Buses and People CodeForces 160E 三维偏序+线段树
  10. Dijkstra经典算法注意点