django 我的博客 (慕课网视频)笔记

用到的命令

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',
]
 

 

posted @ 2018-07-09 16:50  liuw_flexi  阅读(413)  评论(0编辑  收藏  举报