Python & PyCharm & Django 搭建web開發(fā)環(huán)境

Python & PyCharm & Django 搭建web開發(fā)環(huán)境

一、安裝軟件

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

二、部署

1、PyCharm 新建Django工程

完成后,其目錄如下:

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

表示web工程Url映射的配置。

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

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

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

2、啟動

創(chuàng)建完成后,就可以正常啟動了。點擊Run 按鈕,啟動時報錯了:

1Traceback (most recent call last):2File"D:/workspace/MyDjangoProject/manage.py", line 10,in3execute_from_command_line(sys.argv)4File"D:\Python27\lib\site-packages\django\core\management\__init__.py", line 338,inexecute_from_command_line5utility.execute()6File"D:\Python27\lib\site-packages\django\core\management\__init__.py", line 312,inexecute7django.setup()8File"D:\Python27\lib\site-packages\django\__init__.py", line 18,insetup9apps.populate(settings.INSTALLED_APPS)10File"D:\Python27\lib\site-packages\django\apps\registry.py", line 89,inpopulate11"duplicates: %s"%app_config.label)12django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, duplicates: admin

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

1INSTALLED_APPS =(2'django.contrib.admin',3'django.contrib.auth',4'django.contrib.contenttypes',5'django.contrib.sessions',6'django.contrib.messages',7'django.contrib.staticfiles',8'django.contrib.admin',9'student',10)

注釋掉其中一行后(為什么會有這個問題,估計是個bug),重新啟動,ok

3、web工程添加頁面

此時,我們尚沒有寫一行代碼,程序就duang跑起來了! 快添加一個Hello World的頁面吧。

打開student/views.py文件,輸入以下內容

1

2

3

4

5defsayHello(request):

s='Hello World!'

current_time=datetime.datetime.now()

html='

%s

%s

'%(s, current_time)

returnHttpResponse(html)

打開url.py文件,需要進行url映射的配置:

url(r'^student/', sayHello)

當用戶輸入http://**/student 時,便會調用sayHello方法,該方法通過HttpResponse()將頁面內容作為響應返回。

重啟服務,訪問http://localhost:8000/student/

在views.py頁面可以將頁面需要的元素通過字符串的形式,調用HttpResponse()類作為響應返回到瀏覽器。但這樣,頁面邏輯和頁面混合在一起,手寫起來很繁瑣,工作量比較大。如果我們需要展示一些動態(tài)的數(shù)據(jù),而頁面基本不改變的情況下,該怎么做呢?

比如在用戶訪問http://localhost:8000/student/時,我們想動態(tài)展示一些學生的數(shù)據(jù)。可以這樣做:

首先在templates目錄下,新建 student.html文件,該文件作為模板,內容如下:

1234567

    8{% for student in students %}9
  • 10id:{{ student.id }},姓名:{{ student.name }},age: {{ student.age }}11
  • 12{% endfor %}13
1415

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

1defshowStudents(request):2list = [{id: 1,'name':'Jack'}, {id: 2,'name':'Rose'}]3returnrender_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'],

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

至此,我們已可以正常將一些“動態(tài)”數(shù)據(jù)綁定到模板上了。但是怎么樣訪問數(shù)據(jù)庫呢?

從數(shù)據(jù)庫獲取需要的數(shù)據(jù),展示在頁面上?

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

接著配置數(shù)據(jù)庫連接:

1DATABASES ={2'default': {3'ENGINE':'django.db.backends.mysql',4'NAME':'student',5'USER':'root',6'PASSWORD':'1234',7'HOST':'127.0.0.1',8'PORT':'3306',9#'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),10}11}

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

輸入:

1fromdjango.dbimportconnection2cursor = connection.cursor()

如果不報錯,說明配置正確。

創(chuàng)建model,打開models.py,定義model如下:

1classStudent(models.Model):2id =models.BigIntegerField3name = models.CharField(max_length=20, default='a')

然后調用 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

1defshowRealStudents(request):2list =Student.objects.all()3returnrender_to_response('student.html', {'students': list})

urls.py添加映射?url(r'^showRealStudents/$', showRealStudents)

重啟服務,打開連接:http://localhost:8000/showRealStudents

頁面輸出正常。

至此,使用Django,可以正常操作數(shù)據(jù)庫,自定義模板,在頁面展示數(shù)據(jù)了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容