zoukankan      html  css  js  c++  java
  • django 我的博客 (慕课网视频)笔记

    用到的命令

    1.创建项目
    django-admin startproject myBlog 
    
    2.创建app
    cd [
    项目名]
    python3 manage.py startapp blog

    3.数据迁移
    python3 manage.py make
    migrations
    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',
    ]
    此文仅为鄙人学习笔记之用,朋友你来了,如有不明白或者建议又或者想给我指点一二,请私信我。liuw_flexi@163.com/QQ群:582039935. 我的gitHub: (学习代码都在gitHub) https://github.com/nwgdegitHub/
  • 相关阅读:
    Django学习日记-06新url多对多表添加 编辑操作
    Django学习日记-05Ajax一对多添加 编辑操作
    Django学习日记-04Ajax单表操作编辑部分和js阻止
    Django学习日记-03单表-模态对话框的Ajax和新URL
    Django学习日记-02简单的模板渲染
    都2020年了,还问GET和POST的区别
    以面象对象的思想来操作SQL
    tcp-server--循环为多个客户端提供服务
    socket-udp
    第六周-第06章节-Python3.5-类变量的作用及析构函数
  • 原文地址:https://www.cnblogs.com/liuw-flexi/p/9284597.html
Copyright © 2011-2022 走看看