django基础复习

Django
    - 路由系统 url.py
    - 视图函数 views.py
        - 数据库操作 models.py
        - 模板引擎渲染
            - HttpReponse(字符串)
            - render(request,'/path/a.html',{'name':'root'})
    
一、示例:用户基本CURD
    1.数据库设计
        id   hostname  ip  port  status
    2.功能的实现
        预备:
            创建project     django-admin startproject mysite
            创建app         cd mysite
                            python manage.py startapp app01
            配置模板路径    settings.py
                            TEMPLATE
                                DIRS: [os.path.join(BASE_DIR,'templates'),]
            配置静态文件    settings.py
                            STATICFILES_DIRS = (
                                os.path.join(BASE_DIR,'static'),
                            )
            
二、路由系统 urls.py
        a. /^servers$  -> servers
        b. url(r'^edit_user_new-(?P<nnid>d+).html$', views.edit_user_new),
        c. url(r'^edit_user_new-(d+).html$', views.edit_user_new,name='bbb'),
            {% url "bbb" 1 %}  ==> edit_user_new-1.html
        d. url(r'^edit_user_new-(?P<nnid>d+).html$', views.edit_user_new, name='nnn'),
            {% url "nnn" nnid=1 %}  ==> edit_user_new-1.html
        e. 
            主urls.py
                    url(r'^cmdb/', include('app01.urls')),
                    url(r'^config/', include('app02.urls')),
            app01  urls.py
                    ...
            app02  urls.py
                    ...
        
三、视图函数 views.py
    获取请求信息:
        request.POST  {'username':'root'..}
        request.GET
        request.FILES
        request.method
        request.body = username=root;age=18;gender=male

    响应结果:
        return HttpReponse(..)
        return render(request,'path/a.html',{})
        return redirect('http://www.baidu.com')
    
四、Django数据库操作
                    
    1. 类   --> 数据库的表
       字段 --> 列
       对象 --> 一行数据
        class UserInfo(models.Model):
            nid = models.AutoField(primary_key=True)
            username = models.CharField(max_length=32)
            pwd = models.CharField(max_length=64)
            age = models.IntegerField()
            
    2. 根据app的models.py生成数据库表
        python manage.py makemigrations
        python manage.py migrate
            
        PS: settings注册app名字
        注意:
            MySQL
                - 手动创建库名
                - settings.py 中配置
                    DATABASES = {
                        'default': {
                        'ENGINE': 'django.db.backends.mysql',
                        'NAME':'dbname',
                        'USER': 'root',
                        'PASSWORD': 'xxx',
                        'HOST': '',
                        'PORT': '',
                        }
                    }
                - Django默认链接MySQL: 
                    - MySqlDB
                    - pymysql
                    在配置目录的init.py中:
                        import pymysql
                        pymysql.install_as_MySQLdb()
    
              
    3. 数据库基本操作
        a. 查
            models.tb.objects.all()
            models.tb.objects.filter(nid=1)
            models.tb.objects.filter(nid=1).first()
        
        b. 增
            models.tb.objects.create(...)
            
            obj = models.tb(...)
            obj.save()
        c. 删
            models.tb.objects.all().delete()
            models.tb.objects.filter(nid=1).delete()
        d. 改
            models.tb.objects.all().update(...)
            models.tb.objects.filter(nid=1).update(...)
                    
五、模板引擎

    特殊规则:
        - 1
            {{k1}}
        
        - 2
            {% if a == 123 %}
            
            {% else %}
            
            {% endif %}
        
        - 3
            {% for item in LIST %}
                {{item}}
            {% endfor %}
        - 4
            # 索引:字典.k1     列表.1
            
        - 5.自定义模板方法
            - filter:       在if条件中做条件时
            - simple_tag:   在页面仅显示内容时
            
        - 6. extends
            - 模板的继承
            
        - 7. include
            - 导入公共组件
        
    
六、Cookie

    - 是用户浏览器上的一个键值对
        - 设置超时时间
    
    利用cookie可实现:
        - 登录验证
        - 页面显示条数
        - 拖动位置..

    两大忌讳:
        - 敏感信息
        - 简单
七、Session
    - 放置在服务器端的键值对
    
    session = {
        'asdfasdfasd': {'username':'hailong'},
        'asdfasdfasdf': {username:'feinikesi'},
    }
  

  

原文地址:https://www.cnblogs.com/nulige/p/6544014.html