欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用PyCharm配合部署Python的Django框架的配置紀(jì)實

 更新時間:2015年11月19日 15:55:30   作者:一寧  
這篇文章主要介紹了使用PyCharm配合部署Python的Django框架的配置紀(jì)實,PyCharm是一款強大的Python的IDE,需要的朋友可以參考下

安裝軟件
安裝 Python 2.7、PyCharm、pip(Python包管理工具)、Django ( pip install Django)

部署
PyCharm 新建Django工程

20151119154704840.png (657×231)

完成后,其目錄如下:

20151119154725930.png (463×365)

子目錄MyDjangoProject下表示工程的全局配置,分別為setttings.py、urls.py和wsgi.py,其中setttings.py包括了系統(tǒng)的數(shù)據(jù)庫配置、應(yīng)用配置和其他配置,urls.py則
表示web工程Url映射的配置。
子目錄student則是在該工程下創(chuàng)建的app,包含了models.py、tests.py和views.py等文件
templates目錄則為模板文件的目錄
manage.py是Django提供的一個管理工具,可以同步數(shù)據(jù)庫等等
 
啟動
創(chuàng)建完成后,就可以正常啟動了。點擊Run 按鈕,啟動時報錯了:

Traceback (most recent call last):
 File "D:/workspace/MyDjangoProject/manage.py", line 10, in <module>
  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
  "duplicates: %s" % app_config.label)
django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, duplicates: admin

應(yīng)該是admin配置沖突了,打開setttings.py文件,發(fā)現(xiàn)admin配置重復(fù)了

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

20151119154746196.png (523×134)

web工程添加頁面
 
此時,我們尚沒有寫一行代碼,程序就duang跑起來了! 快添加一個Hello World的頁面吧。
 
打開student/views.py文件,輸入以下內(nèi)容

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文件,需要進(jìn)行url映射的配置:
url(r'^student/', sayHello)

當(dāng)用戶輸入http://**/student 時,便會調(diào)用sayHello方法,該方法通過HttpResponse()將頁面內(nèi)容作為響應(yīng)返回。
 
重啟服務(wù),訪問http://localhost:8000/student/

20151119154827451.png (498×159)

在views.py頁面可以將頁面需要的元素通過字符串的形式,調(diào)用HttpResponse()類作為響應(yīng)返回到瀏覽器。但這樣,頁面邏輯和頁面混合在一起,手寫起來很繁瑣,工作量比較大。如果我們需要展示一些動態(tài)的數(shù)據(jù),而頁面基本不改變的情況下,該怎么做呢?
比如在用戶訪問 http://localhost:8000/student/ 時,我們想動態(tài)展示一些學(xué)生的數(shù)據(jù)??梢赃@樣做:
首先在templates目錄下,新建 student.html文件,該文件作為模板,內(nèi)容如下:

<!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作為動態(tài)數(shù)據(jù),通過render_to_response方法綁定到模板頁面student.html上。
 
添加url映射,url(r'^showStudents/$', showStudents)
修改settings.py模板配置:'DIRS': [BASE_DIR+r'\templates'],
 
重啟服務(wù),訪問http://localhost:8000/showStudents,出現(xiàn):

20151119154844588.png (523×146)

至此,我們已可以正常將一些“動態(tài)”數(shù)據(jù)綁定到模板上了。但是怎么樣訪問數(shù)據(jù)庫呢?
從數(shù)據(jù)庫獲取需要的數(shù)據(jù),展示在頁面上?
 
首先需要安裝數(shù)據(jù)庫驅(qū)動啦,即mysql_python,
 接著配置數(shù)據(jù)庫連接:

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'),
  }
}

配置完成之后,需要檢測數(shù)據(jù)庫配置是否正確,使用 manage.py shell命令,進(jìn)入shell交互界面:
輸入:

from django.db import connection
cursor = connection.cursor()

 
如果不報錯,說明配置正確。
創(chuàng)建model,打開models.py,定義model如下:

class Student(models.Model)
  id = models.BigIntegerField
  name = models.CharField(max_length=20, default='a')

 
然后調(diào)用 manage.py syncdb
正常情況下,該步驟做完之后,model 會和數(shù)據(jù)庫保持一致性。但是在測試中,命令執(zhí)行成功后,卻發(fā)現(xiàn)數(shù)據(jù)庫并沒有建立該表。
對于該種情況,做如下操作即可正常:
(1)注釋掉models.py文件代碼,執(zhí)行 manage.py makemigerations student
【和manage.py migerate --fake】
(2)打開注釋,執(zhí)行【 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)
 
重啟服務(wù),打開連接:http://localhost:8000/showRealStudents
頁面輸出正常。
至此,使用Django,可以正常操作數(shù)據(jù)庫,自定義模板,在頁面展示數(shù)據(jù)了。

服務(wù)器
由于Django自帶輕量級的server,因此默認(rèn)使用該server,但實際生產(chǎn)中是不允許這么干的,生產(chǎn)環(huán)境中通常使用Apache Httpd Server結(jié)合mod_wsgi.so來做后端服務(wù)器。
 
以下部署環(huán)境為: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\modules 模塊下。
3、在新建的web工程 MyDjangoProject目錄下新建 django.wsgi文件
內(nèi)容如下(相應(yīng)的目錄需要修改):

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 ,添加如下:

LoadModule wsgi_module modules/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了。

相關(guān)文章

  • python使用pandas按照行數(shù)分割表格

    python使用pandas按照行數(shù)分割表格

    本文主要介紹了python使用pandas按照行數(shù)分割表格,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • python爬蟲爬取淘寶商品信息

    python爬蟲爬取淘寶商品信息

    這篇文章主要為大家詳細(xì)介紹了python爬蟲爬取淘寶商品信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • python安裝pywifi全過程

    python安裝pywifi全過程

    這篇文章主要介紹了python安裝pywifi全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • ZABBIX3.2使用python腳本實現(xiàn)監(jiān)控報表的方法

    ZABBIX3.2使用python腳本實現(xiàn)監(jiān)控報表的方法

    今天小編就為大家分享一篇ZABBIX3.2使用python腳本實現(xiàn)監(jiān)控報表的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python檢查圖片是否損壞及圖片類型是否正確過程詳解

    Python檢查圖片是否損壞及圖片類型是否正確過程詳解

    這篇文章主要介紹了Python檢查圖片是否損壞及圖片類型是否正確過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • keras model.fit 解決validation_spilt=num 的問題

    keras model.fit 解決validation_spilt=num 的問題

    這篇文章主要介紹了keras model.fit 解決validation_spilt=num 的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 利用Python實現(xiàn)簡易計算器的示例代碼

    利用Python實現(xiàn)簡易計算器的示例代碼

    最近學(xué)習(xí)了字符串,運算符,條件語句,循環(huán)語句,我在想可以用我最近學(xué)的東西做什么? 看到運算我就想到了可以做一個簡易的計算器,感興趣的可以了解一下
    2022-11-11
  • 最基礎(chǔ)的Python的socket編程入門教程

    最基礎(chǔ)的Python的socket編程入門教程

    這篇文章主要介紹了最基礎(chǔ)的Python的socket編程入門教程,包括最基本的發(fā)送和接受信息等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • python 實現(xiàn)圖片裁剪小工具

    python 實現(xiàn)圖片裁剪小工具

    這篇文章主要介紹了python 實現(xiàn)圖片裁剪小工具的示例,幫助大家更好的利用python處理圖片,感興趣的朋友可以了解下
    2021-02-02
  • Python使用貪婪算法解決問題

    Python使用貪婪算法解決問題

    這篇文章主要介紹了Python使用貪婪算法解決問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10

最新評論