Python & PyCharm & Django 搭建web開發環境

1、安裝軟件

一、安裝 Python 2.七、PyCharm、pip(Python包管理工具)、Django ( pip install Django)html


2、部署
一、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 按鈕,啓動時報錯了:
 
 1 Traceback (most recent call last):
 2   File "D:/workspace/MyDjangoProject/manage.py", line 10, in <module>
 3     execute_from_command_line(sys.argv)
 4   File "D:\Python27\lib\site-packages\django\core\management\__init__.py", line 338, in execute_from_command_line
 5     utility.execute()
 6   File "D:\Python27\lib\site-packages\django\core\management\__init__.py", line 312, in execute
 7     django.setup()
 8   File "D:\Python27\lib\site-packages\django\__init__.py", line 18, in setup
 9     apps.populate(settings.INSTALLED_APPS)
10   File "D:\Python27\lib\site-packages\django\apps\registry.py", line 89, in populate
11     "duplicates: %s" % app_config.label)
12 django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, duplicates: admin
應該是admin配置衝突了,打開setttings.py文件,發現admin配置重複了
 1 INSTALLED_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
 
 
三、web工程添加頁面
 
此時,咱們尚沒有寫一行代碼,程序就duang跑起來了! 快添加一個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文件,該文件做爲模板,內容以下:
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title></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>
修改 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})
該方法將list做爲動態數據,經過render_to_response方法綁定到模板頁面student.html上。
 
添加url映射,url(r'^showStudents/$', showStudents)
修改settings.py模板配置:'DIRS': [BASE_DIR+r'\templates'],
 
重啓服務,訪問http://localhost:8000/showStudents,出現:
 
至此,咱們已能夠正常將一些「動態」數據綁定到模板上了。可是怎麼樣訪問數據庫呢?
從數據庫獲取須要的數據,展現在頁面上?
 
首先須要安裝數據庫驅動啦,即mysql_python,
 接着配置數據庫鏈接:
 
 1 DATABASES = {
 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 }
配置完成以後,須要檢測數據庫配置是否正確,使用 manage.py shell命令,進入shell交互界面:
輸入:
1 from django.db import connection
2 cursor = connection.cursor()
 
若是不報錯,說明配置正確。
建立model,打開models.py,定義model以下:

1 class Student(models.Model):
2     id = models.BigIntegerField
3     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
    
1 def showRealStudents(request):
2     list = Student.objects.all()
3     return render_to_response('student.html', {'students': list})
urls.py添加映射 url(r'^showRealStudents/$', showRealStudents)
 
重啓服務,打開鏈接: http://localhost:8000/showRealStudents
頁面輸出正常。
至此,使用Django,能夠正常操做數據庫,自定義模板,在頁面展現數據了。
 
相關文章
相關標籤/搜索