day19 django继续

Posted valiente

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day19 django继续相关的知识,希望对你有一定的参考价值。

上节回顾

django

- 路由系统:url.py

- 视图函数:views.py

      - 模板引擎渲染

           - HttpResonse(字符串)

           - render(request,’index.html’)   渲染html给客户端

      - 数据库操作:models.py

一、基本的数据库操作

小例子:实现数据的基本增删改查(CURD)

前戏:

1. 数据库设计

id                 hostname                   ip                 port             status

2.实现功能

     a.预备阶段

              创建project  :django-admin startproject  mysite

              创建app:cd mysite   ----->     python manager.py startapp app01

              配置模板路径:settings.py  ----->   TEMPLATE

                    \'DIRS\': [os.path.join(BASE_DIR, \'templates\')]

              配置静态文件:settings.py   ----->   STATICFILES

                        STATIC_URL = \'/static/\'
STATICFILES_DIRS = (
os.path.join(BASE_DIR,\'static\')
)

image

     b.请求URL----->def

     c.views:数据库获取数据

详细步骤如下:

  • 数据库的创建:
    - 先创建类,也就相当于是数据库的表

      - 字段:表的列

具体如下:

image

from django.db import models

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()

开始生成表:

D:\\project\\day19>python manage.py makemigrations

D:\\project\\day19>python manage.py migrate

前提:要注册app的名字(settings.py里注册)

注意事项:

如果连接mysql的话要手动创建数据库

修改settings.py下的database字段:

DATABASES = {
    \'default\': {
    \'ENGINE\': \'django.db.backends.mysql\',
    \'NAME\':\'dbname\',
    \'USER\': \'root\',
    \'PASSWORD\': \'xxx\',
    \'HOST\': \'\',
    \'PORT\': \'\',
    }
}

还需要修改__init__.py文件(project下的)

import pymysql
pymysql.install_as_MySQLdb()

url配置:

image

views配置

 

models配置:

server.html配置

路由系统

静态路由:

url(r\'^add_user$\', views.add_user),

动态路由:

url(r\'^edit_user_new-(?P<nnid>\\d+).html$\', views.edit_user),
url(r\'^edit_user_new-(?P<nnid>\\d+).html$\', views.edit_user,name=\'mmm\'),
    {% url \'mmm\' nnid=obj.nid %} =====>   edit_user_new-1.html
多项目路由配置:
主urls配置
from django.conf.urls import url
from django.conf.urls import include
from django.contrib import admin
urlpatterns = [
    url(r\'^app01/\',include(\'app01.urls\')),
    url(r\'^app02/\',include(\'app01.urls\')),
    url(r\'^app03/\',include(\'app01.urls\')),
]
 
从urls.py(需要创建)
from django.conf.urls import url
from django.conf.urls import include
from django.contrib import admin
from app03 import views
urlpatterns = [
    url(r\'^admin/\', admin.site.urls),
    url(r\'^test\', views.test),
]

 

视图函数

获取请求信息:

request.POST

request.GET

request.FILES

request.method

响应结果:

        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\'},
    }

以上是关于day19 django继续的主要内容,如果未能解决你的问题,请参考以下文章

python16_day20Django_继续抽屉项目

Python Day19-20(Django基础)

python16_day19Django_抽屉项目

DAY19-Django之model进阶

人生苦短,我用python-- Day19 django框架之URL路由系统视图应用模板应用django之orm应用

python2.0_day19_充分使用Django_form实现前端操作后台数据库