django 学习笔记
啟動虛擬機(jī):
workon bj18_py3
創(chuàng)建一個項目:
django-admin.py startproject mysite
啟動開發(fā)用服務(wù)器:從外層項目 mysite 目錄切換進(jìn)去,若準(zhǔn)備好了就運行命令:
python manage.py runserver
python manage.py runserver 8080
python manage.py runserver 0.0.0.0:8000 你將會看到命令行輸出如下內(nèi)容:? Performing system checks...? 0 errors found? May 13, 2015 - 15:50:53? Django version 1.8, using settings 'mysite.settings'? Starting development server at http://127.0.0.1:8000/? Quit the server with CONTROL-C. ?? 請在你的 Web 瀏覽器中訪問 http://127.0.0.1:8000/。你會看到一個令人愉悅的,柔和的淡藍(lán)色 “Welcome to Django” 頁面。它工作正常! 也可以指定 ?python manage.py runserver 0.0.0.0:8001 ? 指定地址和端口。 數(shù)據(jù)庫設(shè)置: 以mysql數(shù)據(jù)庫為例,編輯 mysite/settings.py。 DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'mysite_db', #使用數(shù)據(jù)庫名稱,數(shù)據(jù)庫必須提前創(chuàng)建好'USER': 'root', #鏈接數(shù)據(jù)庫的用戶名'PASSWORD': 'itcast', #鏈接數(shù)據(jù)庫的密碼'HOST':'localhost', #配置數(shù)據(jù)庫的ip地址'PORT':'3306', #配置數(shù)據(jù)庫的端口號 } }
這時,啟動開發(fā)服務(wù)器出錯,原因是缺少MySQLdb模塊,用pip list 命令查看,
(bj18_py3) python@ubuntu:~/bj18/mysite$ pip list Package Version ------------- ------- Django 1.8.2 pip 19.1.1 pkg-resources 0.0.0 PyMySQL 0.9.3 setuptools 41.0.1 wheel 0.33.1這時,python3需要用pip install pymysql 安裝。安裝成功后在__init__.py文件加入:
?
import pymysql pymysql.install_as_MySQLdb()?
然后啟動開發(fā)用服務(wù)器。
創(chuàng)建模型: 項目 ( Projects ) vs. 應(yīng)用 ( apps ) 項目與應(yīng)用之間有什么不同之處?應(yīng)用是一個提供功能的 Web 應(yīng)用 – 例如:一個博客系統(tǒng)、一個公共記錄的數(shù)據(jù)庫或者一個簡單的投票系統(tǒng)。 項目是針對一個特定的 Web 網(wǎng)站相關(guān)的配置和其應(yīng)用的組合。一個項目可以包含多個應(yīng) 用。一個應(yīng)用可以在多個項目中使用。?
要創(chuàng)建你的應(yīng)用,請確認(rèn)與 manage.py 文件在同一的目錄下并輸入以下命令:
python manage.py startapp polls在這簡單的投票應(yīng)用中,我們將創(chuàng)建兩個模型: Poll 和 Choice 。 Poll 有:問題和發(fā)布日期兩個字段。 Choice 有兩個字段: 選項 ( choice ) 的文本內(nèi)容和投票數(shù)。每一個 Choice 都與一個 Poll 關(guān)聯(lián)。這些概念都由簡單的 Python 類來表現(xiàn)。編輯 polls/models.py 文件后如下所示:
class Question(models.Model):??? question_text = models.CharField(max_length=200)????????? #一些 Field 實例是需要參數(shù)的。 例如 CharField 需要你指定~django.db.models.CharField.max_length 。
??? pub_date = models.DateTimeField('date published')??? #你可以在初始化 Field 實例時使用第一個位置的可選參數(shù)來指定人類可讀的名字。這在Django的內(nèi)省部分中被使用到了,而且兼作文檔的一部分來增強(qiáng)代碼的可讀性。若字段未提供該參數(shù),Django 將使用符合機(jī)器習(xí)慣的名字。在本例中,我們僅定義了一個符合人類習(xí)慣的字段名 Poll.pub_date 。對于模型中的其他字段,機(jī)器名稱就已經(jīng)足夠替代人類名稱了。
class Choice(models.Model):
??? poll = models.ForeignKey(Question)?????????????????????? #定義了一個關(guān)聯(lián)。它告訴 Django 每一個 Choice 關(guān)聯(lián)一個 Poll 。
??? choice_text = models.CharField(max_length=200)
??? votes = models.IntegerField(default=0)?????????????? #一個 Field 實例可以有不同的可選參數(shù); 在本例中,我們將 votes 的 default 的值設(shè)為 0。
?Django 支持常見數(shù)據(jù)庫的所有關(guān)聯(lián):多對一(many-to-ones ),多對多( many-to-manys ) 和 一對一 ( one-to-ones )。
? 激活模型 : 有了這些模型代碼 Django 就可以做:為該應(yīng)用創(chuàng)建對應(yīng)的數(shù)據(jù)庫架構(gòu) (CREATE TABLE statements) 。 為 Poll 和Choice 對象創(chuàng)建 Python 訪問數(shù)據(jù)庫的 API 。 首先,我們需要告訴我們的項目已經(jīng)安裝了 polls 應(yīng)用。再次編輯 settings.py 文件,在 INSTALLED_APPS 設(shè)置中加入 'polls' 字符。因此結(jié)果如下所示: INSTALLED_APPS = ('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','polls', ) 現(xiàn)在 Django 已經(jīng)知道包含了 polls 應(yīng)用。讓我們運行如下命令: python manage.py makemigrations #生成遷移文件python mange.py migrate #執(zhí)行遷移生成表
?
進(jìn)入管理網(wǎng)站: 在sattings.py設(shè)置本地化 LANGUAGE_CODE = 'zh-CN'TIME_ZONE = 'Asia/Shanghai'?
?設(shè)置超級管理員賬戶密碼 python manage.py syncdbpython manage.py createsuperuser#創(chuàng)建超級用戶 我們需要告訴管理網(wǎng)站 Poll 對象要有一個管理界面。為此,我們在你的 polls 目錄下創(chuàng)建一個名為 admin.py 的文件,并添加如下內(nèi)容: from django.contrib import admin from polls.models import Question,Choice
class QuestionAdmin(admin.ModelAdmin):
??? list_display = ["id","question_text","pub_date"]
class ChoiceAdmin(admin.ModelAdmin):
??? list_display = ["id","choice_text","votes","poll_id"]
admin.site.register(Question,QuestionAdmin)
admin.site.register(Choice,ChoiceAdmin)
?修改models.py文件,返回名字:
class Question(models.Model):question_text = models.CharField(max_length=200) #一些 Field 實例是需要參數(shù)的。 例如 CharField 需要你指定~django.db.models.CharField.max_length 。pub_date = models.DateTimeField('date published') #你可以在初始化 Field 實例時使用第一個位置的可選參數(shù)來指定人類可讀的名字。這在Django的內(nèi)省部分中被使用到了,而且兼作文檔的一部分來增強(qiáng)代碼的可讀性。若字段未提供該參數(shù),Django 將使用符合機(jī)器習(xí)慣的名字。在本例中,我們僅定義了一個符合人類習(xí)慣的字段名 Poll.pub_date 。對于模型中的其他字段,機(jī)器名稱就已經(jīng)足夠替代人類名稱了。def __str__(self):return self.question_text class Choice(models.Model):poll = models.ForeignKey(Question) #定義了一個關(guān)聯(lián)。它告訴 Django 每一個 Choice 關(guān)聯(lián)一個 Poll 。choice_text = models.CharField(max_length=200)votes = models.IntegerField(default=0) #一個 Field 實例可以有不同的可選參數(shù); 在本例中,我們將 votes 的 default 的值設(shè)為 0。def __str__(self):return self.choice_text?
?
? ? ? ? ? ? ? ? posted on 2019-07-03 07:17 qiaoliang0302 閱讀(...) 評論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/ql0302/p/11124158.html
總結(jié)
以上是生活随笔為你收集整理的django 学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS 安装Nginx
- 下一篇: windows10环境运用SSH和Swi