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/
  • 相关阅读:
    uniapp上传图片
    vue 路由router传参,刷新丢失问题
    前端网站收藏
    uni.startPullDownRefresh 只能执行一次的解决方案
    移动端,h5页面1px 1像素边框过粗解决方案
    让WebApi支持Namespace
    Ubuntu 14.04下安装GitLab
    Ubuntu学习笔记
    淘宝订单数据转CSV
    修改SQL Server 数据库的编码
  • 原文地址:https://www.cnblogs.com/liuw-flexi/p/9284597.html
Copyright © 2011-2022 走看看