㈠ 如何使用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了。
㈡ python怎麼搭建django框架
運行環境
Windows 7(64位) + Python 2.7 + Django 1.7.1
1.安裝django框架
當然你首先要有python環境,對於學python的朋友們這個就不多說了~~
我使用的是setuptools工具來安裝的,setuptools是python中安裝第三方模塊常用的安裝工具
1.1安裝setuptools工具(如果會安裝的可以直接跳過)
先從這個地址下載ez_setup.py:
https://pypi.python.org/pypi/setuptools#windows(在頁面最下面)
我下載的是setuptools-7.0.zip,將其解壓,將解壓的setuptools-7.0文件放到一個目錄,我這里假定將其放到C:\workspace目錄下
打開命令行cmd,在cmd中切換到C:\workspace\setuptools-7.0,即setuptools-7.0安裝目錄
運行命令:
python ez_setup.py
該命令會安裝setuptools工具,安裝後打開你的python安裝目錄下的Scripts目錄(我的是C:\Python27\Scripts),會看到easy_install.exe等文件
注意將python安裝目錄下的Scripts目錄(我的是C:\Python27\Scripts)添加到環境變數path,否則下面的easy_install命令會報錯
1.2安裝django框架
在cmd中輸入:
easy_install django
有的安裝過程可能會提示缺少vc++包,根據提示網址(我忘了~)下載包,我下載的是VCForPython27.msi,安裝vc++後再執行安裝
這樣就自動安裝了django,是不是很方便,哈哈
2.創建django項目,這里假定在c:\workspace\djangoTest下創建(和java有點差別,java是直接創建項目就可以了,python是要先創建項目再在項目里創建app)
進入c:\workspace\djangoTest目錄,輸入:
django-admin startproject mytodo #網上很多是python django-admin.py startproject mytodo,版本不一樣可能命令有細微差別
就創建了mytodo項目
3.啟動調試伺服器
進入c:\workspace\djangoTest\djangoTest\mytodo目錄:
cd mytodo
然後輸入:
python manage.py runserver
在瀏覽器中輸入http://127.0.0.1:8000/,看能否訪問頁面
4.創建app
輸入命令:python manage.py startapp todo
就在mytodo項目下創建了一個app,即todo
編輯mytodo/settings.py文件,在INSTALLED_APPS添加條目todo
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'todo',
)
即在最後添加一行todo(有的版本是項目名+app名,即mytodo.todo)
再次輸入:python manage.py runserver看看你app是否配置好了,養成邊寫邊測試的好習慣,哈哈~
5.配置資料庫
django默認的是使用SQLite資料庫作為後台資料庫,仍然打開mytodo/settings.py,可以看到下面一段:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
這就是django項目的資料庫配置,默認是使用SQLite,我們就使用使用默認配置,安裝SQLite資料庫,不需要修改配置文件
聽到又要安裝資料庫,大家肯定又覺得好復雜,其實在python里安裝三方模塊,資料庫什麼的很簡單,一條命令就可以搞定了~~
輸入命令:
easy_install pysqlite
這樣就安裝了SQLite資料庫
安裝完資料庫,我們也測試一下,輸入命令:
python manage.py syncdb
出現successfully提示就安裝成功了,打開mytodo目錄,看看裡面是否有一個db.sqlite3文件,這就是上面配置的資料庫文件
㈢ python怎麼使用django框架
Django為我們提供了眾多的開發指令,大部分繁瑣的操作都被Django集成在簡潔的命令行提示符中實現。現在打開命令提示符,進入到想要創建
應用的目錄後鍵入django-admin.py startproject
news命令,調用Django的控制台命令新建一個名為news的工程,與此同時Django還在新創建的news文件夾下生成以下四個分工不同的文
件。
1. __init__.py
文件__init__.py可以向Python編譯器表明當前文件夾下的內容是Python工程模塊。
2.manage.py
manage.py是Python腳本文件,與Django的命令行工具django-admin.py配合,可以對建立的工程進行管理配置。
3.settings.py
這是Django工程的配置文件,與工程相關的工程模塊和資料庫全局配置信息都在settings.py中設置。
4.urls.py
文件urls.py負責配置URL的地址映射以及管理URL的地址格式。
當新的工程建立好之後,假如迫不及待就想知道新建工程的模樣,Django已經為你准備好一款輕量級的Web伺服器以便在開發過程中隨時測試使用。
開發者只需在命令提示符下進入工程目錄,鍵入命令manage.py
runserver,就可以啟動Web伺服器來測試新建立的工程,如果啟動沒有錯誤,將可以看到下面這樣的提示信息:「Development
server is running at http://127.0.0.1:8000/」
表示當前工程已經可以通過本機的8000埠訪問。通過瀏覽器打開上述地址Django項目初始頁面將會出現在你面前。
㈣ 如何基於Python搭建Django後台管理系統
介紹一下資料庫的配置就是在setting裡面配置鏈接的資料庫,這里系統以及配置好了,鏈接一個叫做的資料庫,也許有讀者會問,這個資料庫在哪裡,我怎麼沒有,沒關系,你跑一下項目,系統就自動生成一個這個資料庫了,當然django其他資料庫,這里為了方便講解,就用系統自帶的
㈤ python3怎麼用pip安裝django
當然可以,django支持python2和python3. 直接pip install django就行。如果沒安裝pip,下載django文件,然後進入目錄,python setup.py install也可以。
㈥ 如何把Python Django的部署在synology上
其實你沒有理解這樣部署的優點,這樣部署正如django book中所說的那樣,在伺服器沒配置安全的情況下也不容易暴露源代碼(好吧其實也沒見PHP那樣傳統部署方法就有暴露過源代碼是吧……)。
PHP上的Yii框架、ThinkPHP框架也推薦將程序文件部署在網站目錄的上級目錄,而只在網站目錄中保留static靜態文件和一個入口文件。
據我所知,python的flask、bottle、web.py等框架也是推薦如此部署的。
㈦ python django怎麼部署
web項目分為程序模板和靜態資源(例如css,js,image),前者由tornado以wsgi的方式和nginx進行交互(這樣nginx就可以把除了靜態資源的請求交由tornado來處理),後者靜態資源交給nginx去serve。
㈧ 怎樣搭建Django伺服器環境
1.首先安裝python,配置環境變數path:C:Python27;C:Python27Scripts;
2.去django官網下載壓縮包Django-1.8.3.tar.gz,然後解壓在C盤,輸入以下命令:
cdC:Django-1.8.3
pythonsetup.pyinstall
命令運行後,Django環境就安裝好了,然後配置環境變數path:C:Python27Libsite-packagesDjango-1.8.3-py2.7.eggdjangoin
3.在命令終端輸入以下命令導入並檢查django安裝情況:
python
>>>importdjango
>>>django.VERSION
__init__.py:將這個項目目錄作為Python的一個包。
settings.py:項目的配置文件。
urls.py:定義了Django項目中的URL路由表,指定了URL與被調用類之間的對應關系。
wsgi.py:這個是Django1.4中新添加的默認Web伺服器網關介面。
命令窗口切換到cms678文件夾,然後運行命令:pythonmanage.pyrunserver,啟動當前目錄工程。
瀏覽器輸入http://127.0.0.1:8000/
到此基本操作就結束啦:-)