A. 鍦↖IS 涓閮ㄧ講 Django 欏圭洰涓瀹規槗鍑虹幇浠涔堥棶棰橈紵
鍦↖IS(InternetInformationServices)涓閮ㄧ講Django欏圭洰鍙鑳戒細閬囧埌浠ヤ笅涓浜涘父瑙侀棶棰橈細
1.閰嶇疆闂棰橈細IIS鏄寰杞鐨勪駭鍝侊紝鑰孌jango鏄疨ython鐨勬嗘灦錛岀敤浜庡紑鍙慦eb搴旂敤紼嬪簭銆傝繖涓よ呮潵鑷涓嶅悓鐨勬妧鏈鏍堬紝鍥犳ゅ湪閰嶇疆榪囩▼涓鍙鑳戒細鍑虹幇鍥伴毦鎴栨販涔便
2.WSGI闂棰橈細Django浣跨敤WSGI錛圵ebServerGatewayInterface錛変綔涓哄叾涓巜eb鏈嶅姟鍣ㄤ箣闂寸殑鎺ュ彛銆傜劧鑰岋紝IIS騫舵病鏈夊唴緗鐨刉SGI鏀鎸侊紝鎵浠ヤ綘闇瑕佷嬌鐢ㄥ儚鏄"wfastcgi"榪欐牱鐨勫伐鍏鋒潵浣滀負涓浠嬨
3.鏉冮檺闂棰橈細濡傛灉IIS娌℃湁姝g『閰嶇疆錛屽彲鑳戒細鍑虹幇鏉冮檺闂棰橈紝濡傝塊棶鏁版嵁搴撴垨鍏朵粬璧勬簮鏃跺彈闃匯
4.璺寰勯棶棰橈細鍦╓indows鐜澧冧笅錛屾枃浠惰礬寰勫彲鑳介渶瑕佺壒鍒澶勭悊錛屽洜涓哄畠鍜孶nix/Linux緋葷粺鐨勬枃浠惰礬寰勫勭悊鏂瑰紡涓嶅悓銆
5.python鐜澧冮棶棰橈細鏈夋椂錛孖IS鍙鑳芥棤娉曟壘鍒版g『鐨凱ython榪愯岀幆澧冩垨鉶氭嫙鐜澧冦
6.鎬ц兘闂棰橈細鐢變簬IIS鍜孌jango閮介渶瑕佹秷鑰楃郴緇熻祫婧愶紝濡傛灉娌℃湁浼樺寲錛屽彲鑳戒細瀵規ц兘浜х敓褰卞搷銆
7.鏃ュ織鍜岄敊璇璺熻釜錛氬湪IIS涓鏀墮泦鍜屽垎鏋怐jango鐨勯敊璇鏃ュ織鍙鑳戒細姣旇緝楹葷儲銆
瑙e喅涓婅堪闂棰樼殑鏂規硶鍖呮嫭浜嗚В鍜屽︿範IIS鍜孌jango鐨勯厤緗錛屼嬌鐢ㄩ傚綋鐨勫伐鍏峰拰鎻掍歡錛屼互鍙婅繘琛屾ц兘浼樺寲絳夈傚悓鏃,涔熷彲浠ヨ冭檻浣跨敤Docker鎴栧叾浠栧瑰櫒鎶鏈鏉ョ畝鍖栭儴緗茶繃紼嬪苟鍑忓皯鐜澧冨樊寮傘
B. 如何用python做web開發 django環境配置
下載
python-2.7.2.msi
Django-1.3.1.tar.gz
Django暫時只支持python
2.4
~
2.7,
在Django-1.3.1\docs\intro\install.txt中有說明:
Being
a
Python
Web
framework,
Django
requires
Python.
It
works
with
any
Python
version
from
2.4
to
2.7
(e
to
backwards
incompatibilities
in
Python
3.0,
Django
does
not
currently
work
with
Python
3.0;
安裝python-2.7.2,並添加環境變數
D:\Python27;D:\Python27\Scripts;
命令行進入Django-1.3.1目錄,
安裝django
python
setup.py
install
Django提供了tutorial
Django-1.3.1\docs\intro
新建站點
E:\python>django-admin.py
startproject
mysite
啟動django自帶的web伺服器
E:\python>cd
mysite
E:\python\mysite>manage.py
runserver
Validating
models...
0
errors
found
Django
version
1.3.1,
using
settings
'mysite.settings'
Development
server
is
running
at
http://127.0.0.1:8000/
Quit
the
server
with
CTRL-BREAK.
在瀏覽器中輸入
http://127.0.0.1:8000/
瀏覽頁面
ps:
在windows7中按上述步驟配置好後,出現下列情況
D:\work\python>django-admin.py
startproject
mysite
Usage:
django-admin.py
subcommand
[options]
[args]
...
很顯然django-admin.py不參識別startproject命令,其它命令也不能識別。不過,另一種方式卻可以
D:\Python27\Scripts>python
django-admin.py
startproject
mysite
這說明django-admin.py
後面的參數不能傳遞進去,可以通過修改注冊表實現。
輸入regedit,
進入
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command
,
"C:\Python26\python.exe"
"%1"
change
it
to
"C:\Python26\python.exe"
"%1"
%*
成功解決了
C. 如何使用pycharm配合部署python的django框架
安裝軟體
安裝 Python 2.7、PyCharm、pip(Python包管理工具)、Django ( pip install Django)
部署
PyCharm 新建Django工程
完成後,其目錄如下:
子目錄MyDjangoProject下表示工程的全局配置,分別為setttings.py、urls.py和wsgi.py,其中setttings.py包括了系統的資料庫配置、應用配置和其他配置,urls.py則
表示web工程Url映射的配置。
子目錄student則是在該工程下創建的app,包含了models.py、tests.py和views.py等文件
templates目錄則為模板文件的目錄
manage.py是Django提供的一個管理工具,可以同步資料庫等等
啟動
創建完成後,就可以正常啟動了。點擊Run 按鈕,啟動時報錯了:
Traceback (most recent call last):
File "D:/workspace/MyDjangoProject/manage.py", line 10, in <mole>
execute_from_command_line(sys.argv)
File "D:\Python27\lib\site-packages\django\core\management\__init__.py", line 338, in execute_from_command_line
utility.execute()
File "D:\Python27\lib\site-packages\django\core\management\__init__.py", line 312, in execute
django.setup()
File "D:\Python27\lib\site-packages\django\__init__.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "D:\Python27\lib\site-packages\django\apps\registry.py", line 89, in populate
"plicates: %s" % app_config.label)
django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, plicates: admin
應該是admin配置沖突了,打開setttings.py文件,發現admin配置重復了
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'student',
)
注釋掉其中一行後(為什麼會有這個問題,估計是個bug),重新啟動,ok
web工程添加頁面
此時,我們尚沒有寫一行代碼,程序就ang跑起來了! 快添加一個Hello World的頁面吧。
打開student/views.py文件,輸入以下內容
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)
打開url.py文件,需要進行url映射的配置:
url(r'^student/', sayHello)
當用戶輸入http://**/student 時,便會調用sayHello方法,該方法通過HttpResponse()將頁面內容作為響應返回。
重啟服務,訪問http://localhost:8000/student/
在views.py頁面可以將頁面需要的元素通過字元串的形式,調用HttpResponse()類作為響應返回到瀏覽器。但這樣,頁面邏輯和頁面混合在一起,手寫起來很繁瑣,工作量比較大。如果我們需要展示一些動態的數據,而頁面基本不改變的情況下,該怎麼做呢?
比如在用戶訪問 http://localhost:8000/student/ 時,我們想動態展示一些學生的數據。可以這樣做:
首先在templates目錄下,新建 student.html文件,該文件作為模板,內容如下:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<ul>
{% for student in students %}
<li>
id:{{ student.id }},姓名:{{ student.name }},age: {{ student.age }}
</li>
{% endfor %}
</ul>
</body>
</html>
修改 views.py文件,添加方法showStudents()
def showStudents(request):
list = [{id: 1, 'name': 'Jack'}, {id: 2, 'name': 'Rose'}]
return render_to_response('student.html',{'students': list})
該方法將list作為動態數據,通過render_to_response方法綁定到模板頁面student.html上。
添加url映射,url(r'^showStudents/$', showStudents)
修改settings.py模板配置:'DIRS': [BASE_DIR+r'\templates'],
重啟服務,訪問http://localhost:8000/showStudents,出現:
至此,我們已可以正常將一些「動態」數據綁定到模板上了。但是怎麼樣訪問資料庫呢?
從資料庫獲取需要的數據,展示在頁面上?
首先需要安裝資料庫驅動啦,即mysql_python,
接著配置資料庫連接:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'student',
'USER': 'root',
'PASSWORD': '1234',
'HOST': '127.0.0.1',
'PORT': '3306',
#'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
配置完成之後,需要檢測資料庫配置是否正確,使用 manage.py shell命令,進入shell交互界面:
輸入:
from django.db import connection
cursor = connection.cursor()
如果不報錯,說明配置正確。
創建model,打開models.py,定義model如下:
class Student(models.Model)
id = models.BigIntegerField
name = models.CharField(max_length=20, default='a')
然後調用 manage.py syncdb
正常情況下,該步驟做完之後,model 會和資料庫保持一致性。但是在測試中,命令執行成功後,卻發現資料庫並沒有建立該表。
對於該種情況,做如下操作即可正常:
(1)注釋掉models.py文件代碼,執行 manage.py makemigerations student
【和manage.py migerate --fake】
(2)打開注釋,執行【 manage.py makemigerations student和 】manage.py migerate命令
通過以上兩步,便可正常操作了
views.py中添加方法:showRealStudents
def showRealStudents(request):
list = Student.objects.all()
return render_to_response('student.html', {'students': list})
urls.py添加映射 url(r'^showRealStudents/$', showRealStudents)
重啟服務,打開連接:http://localhost:8000/showRealStudents
頁面輸出正常。
至此,使用Django,可以正常操作資料庫,自定義模板,在頁面展示數據了。
伺服器
由於Django自帶輕量級的server,因此默認使用該server,但實際生產中是不允許這么乾的,生產環境中通常使用Apache Httpd Server結合mod_wsgi.so來做後端伺服器。
以下部署環境為:Python2.7.6
1、安裝httpd-2.2.25-win32-x86-no_ssl.msi
2、將下載好的mod_wsgi.so 放在 D:\Program Files\Apache Software Foundation\Apache2.2\moles 模塊下。
3、在新建的web工程 MyDjangoProject目錄下新建 django.wsgi文件
內容如下(相應的目錄需要修改):
import os
import sys
djangopath = "D:/Python27/Lib/site-packages/django/bin"
if djangopath not in sys.path:
sys.path.append(djangopath)
projectpath = 'D:/workspace/MyDjangoProject'
if projectpath not in sys.path:
sys.path.append(projectpath)
apppath = 'D:/workspace/MyDjangoProject/MyDjangoProject'
if apppath not in sys.path:
sys.path.append(apppath)
os.environ['DJANGO_SETTINGS_MODULE']='MyDjangoProject.settings'
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
4、修改httpd.conf ,添加如下:
LoadMole wsgi_mole moles/mod_wsgi.so
WSGIScriptAlias / "D:/workspace/MyDjangoProject/django.wsgi"
<Directory "D:/workspace/MyDjangoProject/">
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
ok,重啟server,頁面正常了。
在部署的過程中,遇到一個異常,如下:
The translation infrastructure cannot be initialized before the apps registry is ready
原因是django.wsgi一開始按照較為古老的寫法,改為新版本的寫法就Ok了。
D. 好程序員分享Python之五分鍾了解Django框架設計
Python編程語言的持續火爆,在最新Tiobe編程語言排行榜中位列第五,熱度持續增加,尤其是在 AI 和 大數據時代,Python是 AI 和大數據時代的第一開發語言。這已經是一個不爭的事實了,唯一的懸念就是誰能坐上第二把交椅了。
問題1:什麼是軟體框架? 舉個簡單的例子,對於一個公司來說,公司中有各個職能部門,每個部門各司其職,通過部門之間的配合來完成工作,這些部門就形成了一個公司的組織架構。從某種意義上來說,公司就是一種框架。那麼對應到軟體設計上來說,軟體框架是由其中的各個模塊組成的,每個模塊負責特定的功能,模塊與模塊之間相互協作來完成軟體開發。 一個公司,它是針對某一市場而成立的,而軟體框架的設計,也是針對某一類軟體問題而設計的,其目的主要是提高軟體開發效率
問題2:Django的簡介和設計思想? Django是用python語言寫的開源web開發框架,並遵循MVC設計。勞倫斯出版集團為了開發以新聞內容為主的網站,而開發出來了這個框架,於2005年7月在BSD許可證下發布。Django的主要目的是簡便、快速的開發資料庫驅動的網站。它強調代碼復用,多個組件可以很方便的以「插件」形式服務於整個框架,Django有許多功能強大的第三方插件,你甚至可以很方便的開發出自己的工具包。這使得Django具有很強的可擴展性。它還強調快速開發原則。
問題3:MVC簡介 MVC的全拼為Model-View-Controller,最早在20世紀80年代為程序語言Smalltalk發明的一種軟體設計模式,是為了將傳統的輸入(input)、處理(processing)、輸出(output)任務運用到圖形化用戶交互模型中而設計的。 現MVC是一種架構設計模式,是一種設計理念。是為了達到分層設計的目的,從而使代碼解耦,便於維護和代碼的復用。MVC是3個單詞的縮寫,全稱:Model-View-Controller(模型-視圖-控制器)。MVC就是提供一種規則,讓你把相同類型的代碼放在一起,這樣就形成了層次,從而達到分層解耦、復用、便於測試和維護的目的。
當前主流的開發語言如Java、PHP、Python中都有MVC框架。 Web MVC各部分的功能 M全拼為Model,主要封裝對資料庫層的訪問,對資料庫中的數據進行增、刪、改、查操作。 V全拼為View,用於封裝結果,生成頁面展示的html內容。 C全拼為Controller,用於接收請求,處理業務邏輯,與Model和View交互,返回結果
問題4:Django框架遵循MVC設計,並且有一個專有名詞:MVT MVT各部分的功能: M全拼為Model,與MVC中的M功能相同,負責和資料庫交互,進行數據處理。 V全拼為View,與MVC中的C功能相同,接收請求,進行業務處理,返回應答。 T全拼為Template,與MVC中的V功能相同,負責封裝構造要返回的html。
E. python——Django項目開發:配置項目/static/路徑,調用css、img、js等靜態文件
在Django項目開發中,不能像正常web開發一樣通過 'imgs/bg.jpg' 訪問本地靜態文件,需要做一些配置,才能實現靜態文件的訪問。
一、首先在項目根路徑下新建一個static文件夾,然後在static文件夾下可以新建相應的css、imgs、js等文件夾,用於存放css、img、js等靜態文件。
二、項目配置
1、打開settings.py,在底部添加:
2、打開urls.py,在 urlpatterns 中添加:(注意,如果你在blog目錄下也建立了urls.py,那麼就得在blog/urls.py中做修改。別忘了import settings):
(不過我經過實測,不加這一個,也可以完成靜態文件的訪問)
3、在html模板最上面添加:
然後在需要的地方按照這個格式進行調用,如:
最後重新運行項目,img等本地靜態文件就可以被django找到了,這時模板對應的頁面就可以顯示使用img等文件了。
F. Python+Django能做什麼
Django是高水準的Python編程語言驅動的一個開源模型.視圖,控制器風格的Web應用程序框架,它起源於開源社區。使用這種架構,程序員可以方便、快捷地創建高品質、易維護、資料庫驅動的應用程序。這也正是OpenStack的Horizon組件採用這種架構進行設計的主要原因。另外,在Django框架中,還包含許多功能強大的第三方插件,使得Django具有較強的可擴展性,可用於開發網站等。