久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

python+django搭建web項(xiàng)目

 大傻子的文淵閣 2019-12-03

轉(zhuǎn)載自https://blog.csdn.net/xm_csdn/article/details/74419683

 

 

創(chuàng)建項(xiàng)目

原文1:http://blog.csdn.net/yjx2323999451/article/details/53200243

原文2:http://www.cnblogs.com/benshan/p/4445074.html

原文3:http://www.runoob.com/django/django-first-app.html

--------------------------------------------------------------------------------------

連接mysql數(shù)據(jù)庫

原文4:http://www.cnblogs.com/yangmv/p/5327477.html

原文5:http://www.cnblogs.com/taiguyiba/p/6058315.html

原文6:http://www.jb51.net/article/42870.htm

前提:

配置好python+django環(huán)境

 

1創(chuàng)建web服務(wù)器

使用cmd命令進(jìn)入到存放項(xiàng)目的目錄中執(zhí)行以下命令:

python django-admin.py startproject mysite

成功后會(huì)在目錄中出現(xiàn) mysite 目錄,此處創(chuàng)建的為開發(fā)服務(wù)器

 

2創(chuàng)建app:

一個(gè)項(xiàng)目中包含一個(gè)或多個(gè)這樣的app,。app可以理解為一塊功能集合,。比如產(chǎn)品管理模塊就包含增刪該查等功能,可以把產(chǎn)品管理叫做一個(gè)app,。每個(gè)Django app都有獨(dú)立的models,,views等,易移植和被復(fù)用

 

使用cmd命令進(jìn)入到mysite目錄下(創(chuàng)建的web服務(wù)器目錄)執(zhí)行以下命令

python manage.py startapp test_pr

test_pr才是web應(yīng)用程序

 

 

3創(chuàng)建模板文件的目錄

在項(xiàng)目根目錄下新建一個(gè)templates目錄

 

4目錄文件說明

子目錄mysite下表示工程的全局配置,分別為setttings.py,、urls.py和wsgi.py,其中setttings.py包括了系統(tǒng)的數(shù)據(jù)庫配置,、應(yīng)用配置和其他配置,urls.py則表示web工程Url映射的配置,。

子目錄test_pr則是在該工程下創(chuàng)建的app,,包含了models.py、tests.py和views.py等文件

templates目錄則為模板文件的目錄

manage.py是Django提供的一個(gè)管理工具,,可以同步數(shù)據(jù)庫等等

-----------------------------------------------------------------------------------------------------------------------------------------------

Django 里更關(guān)注的是模型(Model),、模板(Template)和視圖(Views),Django 也被稱為 MTV 框架 ,。

在 MTV 開發(fā)模式中:

M 代表模型(Model),,即數(shù)據(jù)存取層。該層處理與數(shù)據(jù)相關(guān)的所有事務(wù):如何存取,、如何確認(rèn)有效性,、包含哪些行為以及數(shù)據(jù)之間的關(guān)系等

  T 代表模板(Template),即表現(xiàn)層,。該層處理與表現(xiàn)相關(guān)的決定:如何在頁面或其他類型文檔中進(jìn)行顯示,。

  V代表View,業(yè)務(wù)邏輯層,。這一層包含訪問模型的邏輯和按照模板顯示,。你可以認(rèn)為它是模型和模板的橋梁。

系統(tǒng)對(duì)app有一個(gè)約定:如果你使用了Django的數(shù)據(jù)庫層(模型),,你 必須創(chuàng)建一個(gè)django app,。模型必須在這個(gè)app中存在。

 

5啟動(dòng)

在cmd中進(jìn)入項(xiàng)目目錄(cd d:*/mysite ),執(zhí)行以下命令:

python manage.py runserver 0.0.0.0:8000

在瀏覽器中輸入 127.0.0.1:8000,,若能成功訪問則表示啟動(dòng)成功

 

6添加web工程頁面

打開test_pr/views.py文件,,輸入以下內(nèi)容

 

 
  1. from django.http import HttpResponse

  2.  
  3.  
  4. def sayHello(request):

  5. s = 'Hello World!'

  6. current_time = datetime.datetime.now()

  7. html = '<html><head></head><body><h1> %s </h1><p> %s </p></body></html>' % (s, current_time)

  8. return HttpResponse(html)

 

 

7url映射的配置

打開url.py文件

 

 
  1. from django.conf.urls import url

  2. from test_pr import views

  3.  
  4. urlpatterns = [

  5. # url(r'^admin/', admin.site.urls),

  6. url(r'^$', views.sayHello),

  7. ]


重啟服務(wù),訪問http://localhost:8000/

 

 

8邏輯和頁面分離

8.1在模板目錄下創(chuàng)建一個(gè)student.html文件,,并寫入以下代碼

 

 
  1. <!DOCTYPE html>

  2. <html>

  3. <head>

  4. <title>hello</title>

  5. </head>

  6. <body>

  7. <ul>

  8. {% for student in students %}

  9. <li>

  10. id:{{ student.id }},姓名:{{ student.name }},age: {{ student.age }}

  11. </li>

  12. {% endfor %}

  13. </ul>

  14. </body>

  15. </html>

 

 

8.2修改 views.py文件,,添加方法showStudents()

 

 
  1. def showStudents(request):

  2. list = [{id: 1, 'name': 'Jack'}, {id: 2, 'name': 'Rose'}]

  3. return render_to_response('student.html',{'students': list})


8.3.添加url映射,打開url.py文件

 

 

 
  1. from django.conf.urls import url

  2. from test_pr import views

  3.  
  4. urlpatterns = [

  5. # url(r'^admin/', admin.site.urls),

  6. url(r'^$', views.sayHello),

  7. url(r'^showStudents$', showStudents),

  8. ]

 

 

8.4.修改settings.py模板配置:'DIRS': [BASE_DIR+r'\templates'],

 

 
  1. TEMPLATES = [

  2. {

  3. 'BACKEND': 'django.template.backends.django.DjangoTemplates',

  4. 'DIRS': [BASE_DIR+"/templates", ],

  5. 'APP_DIRS': True,

  6. 'OPTIONS': {

  7. 'context_processors': [

  8. 'django.template.context_processors.debug',

  9. 'django.template.context_processors.request',

  10. 'django.contrib.auth.context_processors.auth',

  11. 'django.contrib.messages.context_processors.messages',

  12. ],

  13. },

  14. },

  15. ]

 

 

8.5.重啟服務(wù),,訪問http://localhost:8000/showStudents,,出現(xiàn):

原文:http://code./django/django-models.html

9.連接數(shù)據(jù)庫

首先需要安裝數(shù)據(jù)庫驅(qū)動(dòng)啦,即mysql_python,,

 

如果你沒安裝 mysql 驅(qū)動(dòng),,可以執(zhí)行以下命令安裝:

pip install mysqlclient


9.1配置數(shù)據(jù)庫連接,打開settings.py文件編寫代碼

 

 
  1. DATABASES = {

  2. 'default': {

  3. 'ENGINE': 'django.db.backends.mysql', //數(shù)據(jù)庫的類型

  4. 'NAME': 'mysite', //所使用的的數(shù)據(jù)庫的名字

  5. 'USER': 'root', //數(shù)據(jù)庫服務(wù)器的用戶

  6. 'PASSWORD': '123456', //密碼

  7. 'HOST': 'localhost', //主機(jī)

  8. 'PORT': '3306', //端口

  9. }

  10. }

 

 

修改完后進(jìn)入DOS進(jìn)入項(xiàng)目目錄下執(zhí)行python manage.py shell命令啟動(dòng)交互界面輸入一下代碼驗(yàn)證數(shù)據(jù)庫配置是否成功,。沒報(bào)錯(cuò)則成功,!


>>> from django.db import connection

>>> cursor = connection.cursor()

 

10.創(chuàng)建模型

在Django中使用數(shù)據(jù)庫布局的第一步是將其表述為Python代碼,。

文件中每個(gè)class相當(dāng)于單個(gè)數(shù)據(jù)庫表,每個(gè)屬性也是這個(gè)表中的一個(gè)字段,。 屬性名就是字段名,,它的類型(例如 CharField )相當(dāng)于數(shù)據(jù)庫的字段類型 (例如 varchar )。

10.1打開test_pr目錄下的models.py

 

 
  1. # -*- coding: utf-8 -*-

  2. from __future__ import unicode_literals

  3.  
  4. from django.db import models

  5.  
  6.  
  7. # Create your models here.

  8. class Student(models.Model):

  9.  
  10. name = models.CharField(max_length=20)

 

 

字段

 

 
  1. 1,、models.AutoField  自增列= int(11)

  2.   如果沒有的話,,默認(rèn)會(huì)生成一個(gè)名稱為 id 的列,如果要顯示的自定義一個(gè)自增列,,必須將給列設(shè)置為主鍵 primary_key=True,。

  3. 2、models.CharField  字符串字段

  4.   必須 max_length 參數(shù)

  5. 3.models.DateField  日期類型 date

  6.   對(duì)于參數(shù),,auto_now =True則每次更新都會(huì)更新這個(gè)時(shí)間,;auto_now_add 則只是第一次創(chuàng)建添加,之后的更新不再改變,。

  7. 4.models.DateTimeField  日期類型 datetime

  8.   同DateField的參數(shù)

  9. 5.models.EmailField  字符串類型(正則表達(dá)式郵箱)=varchar

  10.   對(duì)字符串進(jìn)行正則表達(dá)式

  11. 6.models.FloatField  浮點(diǎn)類型= double

  12. 7.models.IntegerField  整形

  13. 8.models.SmallIntegerField  數(shù)字

  14.   數(shù)據(jù)庫中的字段有:tinyint,、smallint、int,、bigint

  15. 9,、models.TextField  字符串=longtext

  16. 10、models.TimeField  時(shí)間 HH:MM[:ss[.uuuuuu]]

  17. 11,、models.URLField  字符串,地址正則表達(dá)式

  18. 12,、models.BinaryField  二進(jìn)制

  19. 13,、models.ImageField圖片

  20. 14、models.FilePathField文件

  21.  
  22.  
  23.  


參數(shù)

 

 

 

 
  1. 1,、null=True

  2.   數(shù)據(jù)庫中字段是否可以為空

  3. 2,、blank=True

  4.   django的Admin中添加數(shù)據(jù)時(shí)是否可允許空值

  5. 3、primary_key =False

  6.   主鍵,,對(duì)AutoField設(shè)置主鍵后,,就會(huì)代替原來的自增 id 列

  7. 4、auto_now 和 auto_now_add

  8.   auto_now 自動(dòng)創(chuàng)建---無論添加或修改,,都是當(dāng)前操作的時(shí)間

  9.   auto_now_add 自動(dòng)創(chuàng)建---永遠(yuǎn)是創(chuàng)建時(shí)的時(shí)間

  10. 5,、choices

  11. GENDER_CHOICE =(

  12. (u'M', u'Male'),

  13. (u'F', u'Female'),

  14. )

  15. gender = models.CharField(max_length=2,choices = GENDER_CHOICE)

  16. 6、max_length

  17. 7,、default  默認(rèn)值

  18. 8,、verbose_name  Admin中字段的顯示名稱

  19. 9、name|db_column  數(shù)據(jù)庫中的字段名稱

  20. 10,、unique=True  不允許重復(fù)

  21. 11,、db_index =True  數(shù)據(jù)庫索引

  22. 12,、editable=True  在Admin里是否可編輯


11. 激活 模型

 

打開settings.py 文件,找到 INSTALLED_APPS 設(shè)置,,NSTALLED_APPS 告訴 Django 項(xiàng)目哪些 app 處于激活狀態(tài)
 

 

 
  1. INSTALLED_APPS = (

  2. 'django.contrib.auth',

  3. 'django.contrib.contenttypes',

  4. 'django.contrib.sessions',

  5. 'django.contrib.sites',

  6. 'test_pr',

  7. )

 

12.將新建的models同步數(shù)據(jù)庫

# Django 1.7 及以上的版本需要用以下命令

-----------------------------------------------------------------------------------------------------------------

步驟里面第一步將會(huì)在查詢當(dāng)前MySQL和本地的models的差異,,生成合并的代碼。 

第二步是將合并代碼導(dǎo)入數(shù)據(jù)庫,。

cmd進(jìn)入項(xiàng)目目錄執(zhí)行以下命令:

 

 
  1. python manage.py makemigrations

  2. python manage.py migrate

 

# Django 1.6.x 及以下

----------------------------------------------------------------------------------------------------------------

用下面的命令對(duì)校驗(yàn)?zāi)P偷挠行裕?/p>

python manage.py validate

看到 0 errors found 消息,,一切正常。繼續(xù):

運(yùn)行下面的命令來生成 CREATE TABLE 語句:

python manage.py sqlall test_pr

sqlall 命令并沒有在數(shù)據(jù)庫中真正創(chuàng)建數(shù)據(jù)表,,只是把SQL語句段打印出來,。

運(yùn)行 syncdb 命令創(chuàng)建表

python manage.py syncdb

--------------------------------------------------------------------------------------------------------

所有的數(shù)據(jù)庫查找都遵循一個(gè)通用模式:調(diào)用模型的管理器來查找數(shù)據(jù)。

13.models對(duì)數(shù)據(jù)庫增刪查改

原文:http://python./translate/django_182/ref/models/instances.html

打開models.py文件

方式一:

 

 
  1. from django.db import models

  2.  
  3. class Student(models.Model):

  4. name= models.CharField(max_length=20)

  5.  
  6. @classmethod

  7. def create(cls, name

  8. student = cls(name=name)

  9. # do something with the book

  10. return student

  11.  
  12. student = Student.create("zhansan")


方式二(推薦):

 

 
  1. from django.db import models

  2.  
  3. # Create your models here.

  4. class Student(models.Model):

  5. # 如果沒有models.AutoField,,默認(rèn)會(huì)創(chuàng)建一個(gè)id的自增列

  6. name = models.CharField(max_length=20)

  7. # model的字符串表現(xiàn)形式

  8. def __unicode__(self):

  9. return self.name

  10. objects = StudentManager()

  11.  
  12. class StudentManager(models.Manager):

  13.  
  14. def create_student(self, name):

  15. student = self.create(name=name)

  16. # do something with the book

  17. return student


原文:https://my.oschina.net/leeyd/blog/367688
 

增:create()

objects.create(name = 'test') # 新增name字段的值為test

刪:delete()

objects.all().delete() # 刪除表中全部數(shù)據(jù)

objects.get(aa='test').delete() # 刪除一條aa等于'test'的數(shù)據(jù)

objects.filter(aa='123').delete() #過濾出aa字段等于123的都刪除

改:update()

get(id=id).update(name=name)

查:all(),、get()

get(id=id)  # 查詢單條數(shù)據(jù)

filter(name=name) # 查詢匹配條件的多條數(shù)據(jù)

filter(name__contains=name)  # 模糊查詢;name為查詢的字段名

filter(name__contains=name)[0:5] # [0]顯示第一條 [0:2]會(huì)顯示前兩條,,切片不支持負(fù)數(shù)

dome

# models.py

 

 
  1. # -*- coding: utf-8 -*-

  2. from __future__ import unicode_literals

  3.  
  4. from django.db import models

  5.  
  6.  
  7. class StudentManager(models.Manager):

  8.  
  9. def create_student(self, name):

  10. # 方式一

  11. # student = Student(name = name)

  12. # # 保存到數(shù)據(jù)庫

  13. # student.save()

  14. # 方式二(推薦)

  15. student = self.create(name=name)

  16. return student

  17.  
  18. def select_all(self):

  19. # 查詢?nèi)?/code>

  20. list = self.all()

  21. return list

  22.  
  23. def select_one(self, name):

  24. # a = []

  25. # # 查詢單條數(shù)據(jù)

  26. # student = self.get(id=id)

  27. # a.append(student)

  28. # return a

  29. # 查詢匹配條件的多條數(shù)據(jù)

  30. # student = self.filter(name=name)

  31. # 模糊查詢

  32. student = self.filter(name__contains=name)

  33. # 根據(jù)字段內(nèi)容排序后展示數(shù)據(jù),,根據(jù)字段內(nèi)容逆向排序后展示數(shù)據(jù),加一個(gè)負(fù)號(hào)order_by('-name')

  34. tt = student.order_by('name')

  35.  
  36. # 限制數(shù)據(jù)條數(shù), 相當(dāng)于mysql limit

  37. tt1 = self.filter(name__contains=name)[0:5] # [0]顯示第一條 [0:2]會(huì)顯示前兩條,切片不支持負(fù)數(shù)

  38. return tt1

  39.  
  40. def updata_student(self, id, name):

  41. self.get(id=id).update(name=name) # update可多條update(name=name, bb="wahaha")

  42.  
  43. # Create your models here.

  44. class Student(models.Model):

  45.  
  46. # 如果沒有models.AutoField,,默認(rèn)會(huì)創(chuàng)建一個(gè)id的自增列

  47. name = models.CharField(max_length=20)

  48.  
  49. # model的字符串表現(xiàn)形式

  50. def __unicode__(self):

  51. return self.name

  52.  
  53. objects = StudentManager()

  54.  

 

錯(cuò)誤:

Python3:Django連接Mysql數(shù)據(jù)庫時(shí)出錯(cuò),,'Did you install mysqlclient or MySQL-python?'

一、原因

因?yàn)镻ython版本問題,,MySQLdb只能在python2中用,,在python3中,已經(jīng)淘汰,,不能使用了,。

二、解決方案

下載安裝pymysql,,然后

在django項(xiàng)目中根目錄下的__init__.py文件中添加兩行代碼即可,。

假如是開發(fā)對(duì)應(yīng)的子模塊模型,那么在對(duì)應(yīng)模型目錄下的__init__.py文件中添加兩行代碼即可,。

import pymysql pymysql.install_as_MySQLdb()

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多