首頁>技術>

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_nameAdmin中欄位的顯示名稱

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

原文:/file/2019/11/12/20191112120450_11598.jpg = 'test') # 新增name欄位的值為test

刪:delete()

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

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 新手該如何學習Python?實戰專案做什麼?