1創建web服務器:
使用cmd命令進入到存放項目的目錄中執行以下命令:
Python django-admin.py startproject mysite
成功后會在目錄中出現 mysite 目錄,此處創建的為開發服務器
2創建App:
一個項目中包含一個或多個這樣的app。app可以理解為一塊功能集合。比如產品管理模塊就包含增刪該查等功能,可以把產品管理叫做一個app。每個Django app都有獨立的models,views等,易移植和被復用
使用cmd命令進入到mysite目錄下(創建的web服務器目錄)執行以下命令
python manage.py startapp test_pr
test_pr才是web應用程序
3創建模板文件的目錄
在項目根目錄下新建一個templates目錄
4目錄文件說明
子目錄mysite下表示工程的全局配置,分別為setttings.py、urls.py和wsgi.py,其中setttings.py包括了系統的數據庫配置、應用配置和其他配置,urls.py則表示web工程Url映射的配置。
子目錄test_pr則是在該工程下創建的app,包含了models.py、tests.py和views.py等文件
templates目錄則為模板文件的目錄
manage.py是Django提供的一個管理工具,可以同步數據庫等等
-----------------------------------------------------------------------------------------------------------------------------------------------
Django 里更關注的是模型(Model)、模板(Template)和視圖(Views),Django 也被稱為 MTV 框架 。
在 MTV 開發模式中:
M 代表模型(Model),即數據存取層。該層處理與數據相關的所有事務:如何存取、如何確認有效性、包含哪些行為以及數據之間的關系等
T 代表模板(Template),即表現層。該層處理與表現相關的決定:如何在頁面或其他類型文檔中進行顯示。
V代表View,業務邏輯層。這一層包含訪問模型的邏輯和按照模板顯示。你可以認為它是模型和模板的橋梁。
系統對app有一個約定:如果你使用了Django的數據庫層(模型),你 必須創建一個django app。模型必須在這個app中存在。
5啟動
在cmd中進入項目目錄(cd d:*/mysite ),執行以下命令:
python manage.py runserver 0.0.0.0:8000
在瀏覽器中輸入 127.0.0.1:8000,若能成功訪問則表示啟動成功
6添加web工程頁面
打開test_pr/views.py文件,輸入以下內容
from django.http import HttpResponse
def sayHello(request):
s = 'Hello World!'
current_time = datetime.datetime.now()
html = '<html><head></head><body><h1> %s </h1><p> %s </p></body></html>' % (s, current_time)
return HttpResponse(html)
7url映射的配置
打開url.py文件
from django.conf.urls import url
from test_pr import views
urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^$', views.sayHello),
]
重啟服務,訪問http://localhost:8000/
8邏輯和頁面分離
8.1在模板目錄下創建一個student.html文件,并寫入以下代碼
<!DOCTYPE html>
<html>
<head>
<title>hello</title>
</head>
<body>
<ul>
{% for student in students %}
<li>
id:{{ student.id }},姓名:{{ student.name }},age: {{ student.age }}
</li>
{% endfor %}
</ul>
</body>
</html>
8.2修改 views.py文件,添加方法showStudents()
def showStudents(request):
list = [{id: 1, 'name': 'Jack'}, {id: 2, 'name': 'Rose'}]
return render_to_response('student.html',{'students': list})
8.3.添加url映射,打開url.py文件
from django.conf.urls import url
from test_pr import views
urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^$', views.sayHello),
url(r'^showStudents$', showStudents),
]
8.4.修改settings.py模板配置:'DIRS': [BASE_DIR+r'templates'],
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR+"/templates", ],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
8.5.重啟服務,訪問http://localhost:8000/showStudents,出現:
原文:http://code.ziqiangxuetang.com/django/django-models.html
9.連接數據庫
首先需要安裝數據庫驅動啦,即MySQL_python,
如果你沒安裝 mysql 驅動,可以執行以下命令安裝:
pip install mysqlclient
9.1配置數據庫連接,打開settings.py文件編寫代碼
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', //數據庫的類型
'NAME': 'mysite', //所使用的的數據庫的名字
'USER': 'root', //數據庫服務器的用戶
'PASSword': '123456', //密碼
'HOST': 'localhost', //主機
'PORT': '3306', //端口
}
}
修改完后進入DOS進入項目目錄下執行python manage.py shell命令啟動交互界面輸入一下代碼驗證數據庫配置是否成功。沒報錯則成功!
>>> from django.db import connection
>>> cursor = connection.cursor()
10.創建模型
在Django中使用數據庫布局的第一步是將其表述為Python代碼。
文件中每個class相當于單個數據庫表,每個屬性也是這個表中的一個字段。 屬性名就是字段名,它的類型(例如 CharField )相當于數據庫的字段類型 (例如 varchar )。
10.1打開test_pr目錄下的models.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class Student(models.Model):
name = models.CharField(max_length=20)
字段
1、models.AutoField 自增列= int(11)
如果沒有的話,默認會生成一個名稱為 id 的列,如果要顯示的自定義一個自增列,必須將給列設置為主鍵 primary_key=True。
2、models.CharField 字符串字段
必須 max_length 參數
3.models.DateField 日期類型 date
對于參數,auto_now =True則每次更新都會更新這個時間;auto_now_add 則只是第一次創建添加,之后的更新不再改變。
4.models.DateTimeField 日期類型 datetime
同DateField的參數
5.models.EmailField 字符串類型(正則表達式郵箱)=varchar
對字符串進行正則表達式
6.models.FloatField 浮點類型= double
7.models.IntegerField 整形
8.models.SmallIntegerField 數字
數據庫中的字段有:tinyint、smallint、int、bigint
9、models.TextField 字符串=longtext
10、models.TimeField 時間 HH:MM[:ss[.uuuuuu]]
11、models.URLField 字符串,地址正則表達式
12、models.BinaryField 二進制
13、models.ImageField圖片
14、models.FilePathField文件
參數
1、null=True
數據庫中字段是否可以為空
2、blank=True
django的Admin中添加數據時是否可允許空值
3、primary_key =False
主鍵,對AutoField設置主鍵后,就會代替原來的自增 id 列
4、auto_now 和 auto_now_add
auto_now 自動創建---無論添加或修改,都是當前操作的時間
auto_now_add 自動創建---永遠是創建時的時間
5、choices
GENDER_CHOICE =(
(u'M', u'Male'),
(u'F', u'Female'),
)
gender = models.CharField(max_length=2,choices = GENDER_CHOICE)
6、max_length
7、default 默認值
8、verbose_name Admin中字段的顯示名稱
9、name|db_column 數據庫中的字段名稱
10、unique=True 不允許重復
11、db_index =True 數據庫索引
12、editable=True 在Admin里是否可編輯
11. 激活 模型
打開settings.py 文件,找到 INSTALLED_APPS 設置,NSTALLED_APPS 告訴 Django 項目哪些 app 處于激活狀態
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'test_pr',
)
12.將新建的models同步數據庫
# Django 1.7 及以上的版本需要用以下命令
-----------------------------------------------------------------------------------------------------------------
步驟里面第一步將會在查詢當前MySQL和本地的models的差異,生成合并的代碼。
第二步是將合并代碼導入數據庫。
cmd進入項目目錄執行以下命令:
python manage.py makemigrations
python manage.py migrate
# Django 1.6.x 及以下
----------------------------------------------------------------------------------------------------------------
用下面的命令對校驗模型的有效性:
python manage.py validate
看到 0 errors found 消息,一切正常。繼續:
運行下面的命令來生成 CREATE TABLE 語句:
python manage.py sqlall test_pr
sqlall 命令并沒有在數據庫中真正創建數據表,只是把SQL語句段打印出來。
運行 syncdb 命令創建表
python manage.py syncdb
--------------------------------------------------------------------------------------------------------
所有的數據庫查找都遵循一個通用模式:調用模型的管理器來查找數據。
13.models對數據庫增刪查改
原文:http://python.usyiyi.cn/translate/django_182/ref/models/instances.html
打開models.py文件
方式一:
from django.db import models
class Student(models.Model):
name= models.CharField(max_length=20)
@classmethod
def create(cls, name
student = cls(name=name)
# do something with the book
return student
student = Student.create("zhansan")
方式二(推薦):
from django.db import models
# Create your models here.
class Student(models.Model):
# 如果沒有models.AutoField,默認會創建一個id的自增列
name = models.CharField(max_length=20)
# model的字符串表現形式
def __unicode__(self):
return self.name
objects = StudentManager()
class StudentManager(models.Manager):
def create_student(self, name):
student = self.create(name=name)
# do something with the book
return student
原文:https://my.oschina.net/leeyd/blog/367688
增:create()
objects.create(name = 'test') # 新增name字段的值為test
刪:delete()
objects.all().delete() # 刪除表中全部數據
objects.get(aa='test').delete() # 刪除一條aa等于'test'的數據
objects.filter(aa='123').delete() #過濾出aa字段等于123的都刪除
改:update()
get(id=id).update(name=name)
查:all()、get()
get(id=id) # 查詢單條數據
filter(name=name) # 查詢匹配條件的多條數據
filter(name__contains=name) # 模糊查詢;name為查詢的字段名
filter(name__contains=name)[0:5] # [0]顯示第一條 [0:2]會顯示前兩條,切片不支持負數
dome
# models.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
class StudentManager(models.Manager):
def create_student(self, name):
# 方式一
# student = Student(name = name)
# # 保存到數據庫
# student.save()
# 方式二(推薦)
student = self.create(name=name)
return student
def select_all(self):
# 查詢全部
list = self.all()
return list
def select_one(self, name):
# a = []
# # 查詢單條數據
# student = self.get(id=id)
# a.append(student)
# return a
# 查詢匹配條件的多條數據
# student = self.filter(name=name)
# 模糊查詢
student = self.filter(name__contains=name)
# 根據字段內容排序后展示數據,根據字段內容逆向排序后展示數據,加一個負號order_by('-name')
tt = student.order_by('name')
# 限制數據條數, 相當于mysql limit
tt1 = self.filter(name__contains=name)[0:5] # [0]顯示第一條 [0:2]會顯示前兩條,切片不支持負數
return tt1
def updata_student(self, id, name):
self.get(id=id).update(name=name) # update可多條update(name=name, bb="wahaha")
# Create your models here.
class Student(models.Model):
# 如果沒有models.AutoField,默認會創建一個id的自增列
name = models.CharField(max_length=20)
# model的字符串表現形式
def __unicode__(self):
return self.name
objects = StudentManager()