<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      Fork me on GitHub

      被解放的姜戈02 莊園疑云

      作者:Vamei 出處:http://www.rzrgm.cn/vamei 歡迎轉載,也請保留這段聲明。謝謝!

       

      上一回說到,姜戈的江湖初體驗:如何架設服務器,如何回復http請求,如何創建App。這一回,我們要走入糖果莊園。

       

      數據庫是一所大莊園,藏著各種寶貝。一個沒有數據庫的網站,所能提供的功能會非常有限。

       

      為了找到心愛的人,姜戈決定一探這神秘的糖果莊園。

       

      連接數據庫

      Django為多種數據庫后臺提供了統一的調用API。根據需求不同,Django可以選擇不同的數據庫后臺。MySQL算是最常用的數據庫。我們這里將Django和MySQL連接。

       

      在Linux終端下啟動mysql:

      $mysql -u root -p

       

      在MySQL中創立Django項目的數據庫:

      mysql> CREATE DATABASE villa DEFAULT CHARSET=utf8;

      這里使用utf8作為默認字符集,以便支持中文。

       

      在MySQL中為Django項目創立用戶,并授予相關權限:

      mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON villa.* TO 'vamei'@'localhost' IDENTIFIED BY 'vameiisgood';

       

      在settings.py中,將DATABASES對象更改為:

      DATABASES = {
          'default': {
              'ENGINE': 'django.db.backends.mysql',
              'NAME': 'villa',
              'USER': 'vamei',
              'PASSWORD': 'vameiisgood',
              'HOST':'localhost',
              'PORT':'3306',
          }
      }

      后臺類型為mysql。上面包含數據庫名稱和用戶的信息,它們與MySQL中對應數據庫和用戶的設置相同。Django根據這一設置,與MySQL中相應的數據庫和用戶連接起來。此后,Django就可以在數據庫中讀寫了。

       

      姜戈略一遲疑,旋即走入了莊園的大門。

       

      創立模型

      MySQL是關系型數據庫。但在Django的幫助下,我們不用直接編寫SQL語句。Django將關系型的表(table)轉換成為一個類(class)。而每個記錄(record)是該類下的一個對象(object)。我們可以使用基于對象的方法,來操縱關系型的MySQL數據庫。

       

      在傳統的MySQL中,數據模型是表。在Django下,一個表為一個類。表的每一列是該類的一個屬性。在models.py中,我們創建一個只有一列的表,即只有一個屬性的類:

      from django.db import models
      
      class Character(models.Model):
          name = models.CharField(max_length=200)
          def __unicode__(self):
              return self.name

      類Character定義了數據模型,它需要繼承自models.Model。在MySQL中,這個類實際上是一個表。表只有一列,為name。可以看到,name屬性是字符類型,最大長度為200。

      類Character有一個__unicode__()方法,用來說明對象的字符表達方式。如果是Python 3,定義__str__()方法,實現相同的功能。

       

      命令Django同步數據庫。Django根據models.py中描述的數據模型,在MySQL中真正的創建各個關系表:

      $python manage.py syncdb

       

      同步數據庫后,Django將建立相關的MySQL表格,并要求你創建一個超級用戶:

       

      Creating tables ...
      Creating table django_admin_log
      Creating table auth_permission
      Creating table auth_group_permissions
      Creating table auth_group
      Creating table auth_user_groups
      Creating table auth_user_user_permissions
      Creating table auth_user
      Creating table django_content_type
      Creating table django_session
      Creating table west_character

       

      You just installed Django's auth system, which means you don't have any superusers defined.
      Would you like to create one now? (yes/no): yes
      Username (leave blank to use 'tommy'): vamei
      Email address: vamei@vamei.com
      Password:
      Password (again):
      Superuser created successfully.
      Installing custom SQL ...
      Installing indexes ...
      Installed 0 object(s) from 0 fixture(s)

       

       數據模型建立了。打開MySQL命令行:

      $mysql -u vamei -p 

       

      查看數據模型:

      USE villa;
      SHOW TABLES;
      SHOW COLUMNS FROM west_character;

       

      最后一個命令返回Character類的對應表格:

      +-------+--------------+------+-----+---------+----------------+
      | Field | Type         | Null | Key | Default | Extra          |
      +-------+--------------+------+-----+---------+----------------+
      | id    | int(11)      | NO   | PRI | NULL    | auto_increment |
      | name  | varchar(200) | NO   |     | NULL    |                |
      +-------+--------------+------+-----+---------+----------------+
      2 rows in set (0.00 sec)

       可以看到,Django還自動增加了一個id列,作為記錄的主鍵(Primary Key)。

       

      這富麗堂皇的別墅中,姜戈隱隱聞到兇險的味道。

       

      顯示數據

      數據模型雖然建立了,但還沒有數據輸入。為了簡便,我們手動添加記錄。打開MySQL命令行,并切換到相應數據庫。添加記錄:

      INSERT INTO west_character (name) Values ('Vamei');
      INSERT INTO west_character (name) Values ('Django');
      INSERT INTO west_character (name) Values ('John');

      查看記錄:

       SELECT * FROM west_character;

      可以看到,三個名字已經錄入數據庫。

       

      下面我們從數據庫中取出數據,并返回給http請求。在west/views.py中,添加視圖。對于對應的請求,我們將從數據庫中讀取所有的記錄,然后返回給客戶端:

      # -*- coding: utf-8 -*-
      
      from django.http import HttpResponse
      
      from west.models import Character
      
      def staff(request):
          staff_list = Character.objects.all()
          staff_str  = map(str, staff_list)
          return HttpResponse("<p>" + ' '.join(staff_str) + "</p>")

      可以看到,我們從west.models中引入了Character類。通過操作該類,我們可以讀取表格中的記錄

       

      為了讓http請求能找到上面的程序,在west/urls.py增加url導航:

      from django.conf.urls import patterns, include, url
      
      urlpatterns = patterns('',
          url(r'^staff/','west.views.staff'),
      )

       

      運行服務器。在瀏覽器中輸入URL:

      127.0.0.1:8000/west/staff

      查看效果:

       

      從數據庫讀出數據,顯示在頁面

       

      “我心愛的人,原來你在這里。” 姜戈強自鎮定,嘴角忍不住顫動。

       

      總結

      Django使用類和對象接口,來操縱底層的數據庫。

      有了數據庫,就有了站點內容的大本營。

       

      姜戈,風雨欲來。

       

      歡迎閱讀“被解放的姜戈”系列文章。

       

       

      posted @ 2014-02-05 20:22  Vamei  閱讀(29950)  評論(57)    收藏  舉報
      主站蜘蛛池模板: 南木林县| 2020久久国产综合精品swag| 免费人成视频在线| XXXXXHD亚洲日本HD| 免费观看激色视频网站| av高清无码 在线播放| 亚洲综合成人av在线| 小污女小欲女导航| 国产精品一区二区三区四区| 亚洲色欲色欱WWW在线| 亚洲精品一品二品av| 永久无码天堂网小说区| 亚洲国产成人无码av在线播放| 精品国产一区二区三区性色| 国产福利高颜值在线观看| 临洮县| 精品无码一区在线观看| 在线播放亚洲人成电影| 女人喷水高潮时的视频网站| 国产成人综合久久亚洲av| a4yy私人毛片| 一区二区在线观看成人午夜| 久久天天躁狠狠躁夜夜婷| 亚洲国产av无码精品无广告| 玖玖在线精品免费视频| 成人亚洲狠狠一二三四区| 亚洲精品麻豆一区二区| 亚洲一区二区三区自拍天堂| 一区二区三区AV波多野结衣| 黑人精品一区二区三区不| 亚洲 一区二区 在线| 娱乐| 亚洲精品成人片在线观看精品字幕| 草裙社区精品视频播放| 亚洲综合精品一区二区三区| 人妻av资源先锋影音av资源| 狠狠色狠狠色综合久久蜜芽| 18禁成人免费无码网站| 国模少妇无码一区二区三区| 亚洲一区二区经典在线播放| 精品午夜福利在线视在亚洲|