如何使用Python的Django框架創建自己的網站
Django建站主要分四步:1、創建Django項目,2、將網頁模板移植到Django項目中,3、數據交互,4、數據庫
1創建Django項目
本人使用的是pycharm編輯器,打開pycharm,如下圖點擊左下角紅框位置,選擇terminal,然後在terminal窗口輸入
django-admin.py startproject myproject
然後再輸入
python manage.py startapp myapp
上面的myproject和myapp都是自己定義的工程名和APP名
至此,Django項目已經建立完畢。
2將網頁模板移植到Django項目中
1、在myapp文件下新建兩個文件夾,static和templates,static文件夾放置網頁模板的css、js以及其他文件夾,templates文件夾只放.html的文件
2、對Django項目的四個文件進行修改,因爲將模板移植到Django項目中,需要在模板文件中進行一些格式修改。
- setting.py
在裏面添加自己的APP,添加模板的文件夾路徑
'DIRS': [os.path.join(BASE_DIR,'templates')],
- url.py
新加以下語句
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
from myapp import views
然後再添加網頁的路徑
path('login', views.login),
- views.py
定義一個響應函數,函數名必須和網頁的xx.html前綴名相同
def index(request):
return render(request, 'index.html',
- xx.html
在下添加下面語句,表示下面的模板由Django接管
{% load static %}
以下爲Django下的一些語句格式例子
<script src="{% static "js\highcharts.js" %}"></script>
{% for line in data1 %}
{% if line.user == data2.user %}
{% if line.psw == data2.psw %}
<Meta http-equiv="refresh" content="1;url=index">
{% endif %}
{% endif %}
{% endfor %}
可以看出在路徑和for循環if判斷語句中都要用{% %}。
3數據交互
- views.py
首先定義一個list,如user_list[ ],用於存放數據
數據的方法爲POST,所以在響應函數中加一個判斷語句
def login(request):
if request.method == "POST":
username = request.POST.get("username", None)//將用戶輸入的數據存到變量中
password = request.POST.get("password", None)
user_list = {"user": username, "psw": password}
return render(request, 'login.html', {"data1": user_list})//將數據送回到頁面
- xx.html
數據返回到頁面後,通過for循環讀取
{% for line in data1 %}
line.user = data1.user
line.psw = data1.psw
{% endfor %}
4數據庫的操作
需要更改三個文件
- setting.py
Django有自己自帶的數據庫
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), #Django自帶的數據庫
}
}
- models.py
先創建models
class UserInfo(models.Model):
user = models.CharField(max_length=32)
psw = models.CharField(max_length=32)
只要動了models.py,就要在terminal中輸入以下兩個語句
python manage.py makemigrations
python manage.py migrate
- views.py
新加下面語句
from myapp import models
給數據庫寫入數據
models.UserInfo.objects.create(user="zhoupeng", psw="123456")
讀取數據庫數據
user_list = models.UserInfo.objects.all()
可以直接在網頁中讀數據庫進行操作
在admin.py文件中加入以下語句
from myapp.models import UserInfo
admin.site.register(UserInfo)
然後創建超級用戶
在terminal中輸入
python manage.py createsuperuser
即可在http:/ /admin中對數據庫進行操作
至此,一個完整的Django項目就完成了。
調式過程的心得
1、調試過程出現任何bug首先看一下自己是不是有那裏拼寫錯誤
2、有的時候調試很久,什麼都沒有錯,但網頁就是刷新不出來,但是過一段時間卻自動好了,有可能是端口的問題,換個端口試一下
3、中的login爲點擊submit時要跳轉的頁面,寫錯會出現page not found,對於method,有數據是爲post,無數據是爲get
4、在url.py中 path(’’, views.login)和path(‘index’, views.index)的區別,前者的url爲http:/…/後者爲http:/…/index
5、出現錯誤爲“Local variable xxx referenced before assignment”,就是局部變量和全局變量的問題,在響應函數中加global xxx,或者直接將變量定義在函數裏