day19 django繼續

上節回顧

djangohtml

- 路由系統:url.pypython

- 視圖函數:views.pymysql

      - 模板引擎渲染sql

           - HttpResonse(字符串)數據庫

           - render(request,’index.html’)   渲染html給客戶端django

      - 數據庫操做:models.py瀏覽器

1、基本的數據庫操做

小例子:實現數據的基本增刪改查(CURD)服務器

前戲:

1. 數據庫設計cookie

id                 hostname                   ip                 port             statussession

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

相關文章
相關標籤/搜索