python+Django+pycharm+mysql 搭建首個(gè)web項(xiàng)目詳解
本文實(shí)例講述了python+Django+pycharm+mysql 搭建首個(gè)web項(xiàng)目。分享給大家供大家參考,具體如下:
前面的文章記錄了環(huán)境搭建的過程,本節(jié)記錄首個(gè)web項(xiàng)目調(diào)試
首先檢查安裝的模塊,輸入dos命令 pip list, 會(huì)顯示已安裝的模塊,看是否有Django,PyMySQL模塊
C:\Users\Administrator\PycharmProjects>pip list DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to di sable this warning. Django (2.0.1) pip (9.0.1) PyMySQL (0.8.0) pytz (2017.3) setuptools (28.8.0)
1、然后開始創(chuàng)建項(xiàng)目: 運(yùn)行PyCharm, 菜單選File->New project 彈出對話框

在對話框中左側(cè)選Django ,項(xiàng)目名稱修改為mysite,點(diǎn)Create按鈕創(chuàng)建
然后點(diǎn)擊運(yùn)行,即可看到web項(xiàng)目啟動(dòng),并提示 Starting development server at http://127.0.0.1:8000/
點(diǎn)擊鏈接即可在瀏覽器看到默認(rèn)網(wǎng)頁,創(chuàng)建成功
2. 創(chuàng)建APP
在每個(gè)django項(xiàng)目中可以包含多個(gè)APP,相當(dāng)于一個(gè)大型項(xiàng)目中的分系統(tǒng)、子模塊、功能部件等等,相互之間比較獨(dú)立,但也有聯(lián)系。所有的APP共享項(xiàng)目資源。
在pycharm下方的terminal終端中輸入命令:
python manage.py startapp cmdb
這樣就創(chuàng)建了一個(gè)叫做cmdb的APP,django自動(dòng)生成“cmdb”文件夾。
3. 修改mysite\urls.py文件,修改后以下:
from django.urls import path
from cmdb import views
from django.conf.urls import url
urlpatterns = [
# path('admin/', admin.site.urls),
url(r'^index/',views.index)
]
4.修改cmdb\views.py文件
from django.shortcuts import render
from django.shortcuts import HttpResponse
import pymysql
# Create your views here.
# 打開數(shù)據(jù)庫連接
db = pymysql.connect(host="192.168.1.100", user="root",
password="abc123", db="testdb", port=3306)
# 使用cursor()方法獲取操作游標(biāo)
cur = db.cursor()
def index(request):
start = 10
limit = 10
if request.method == "POST":
start = request.POST.get("start", None)
limit = request.POST.get("limit", None)
sql = "SELECT * FROM `siterecord` WHERE 1 limit %s,%s" % (start, limit)
try:
cur.execute(sql) # 執(zhí)行sql語句
results = cur.fetchall() # 獲取查詢的所有記錄
except Exception as e:
raise e
return render(request, "index.html", {"results":results})
主要是連接數(shù)據(jù)庫,根據(jù)網(wǎng)頁界面輸入的start,limit查詢數(shù)據(jù)庫記錄,并把記錄返回給頁面輸出
5.創(chuàng)建template\index.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="/static/js/test.js"></script>
</head>
用戶輸入
<hr>
<form action="/index/" method="post">
開始: <input type="text" name="start"/><br>
條數(shù):<input type="text" name="limit"/><br>
<input type="submit" value="提交"><br>
</form>
<hr>
<h1>訪問記錄展示</h1>
<table border="1">
<thead>
<th>id</th>
<th>softid</th>
<th>visittime</th>
<th>ip</th>
</thead>
<tbody>
{% for row in results %}
<tr>
<td>{{ row.0 }}</td>
<td>{{ row.1 }}</td>
<td>{{ row.2 }}</td>
<td>{{ row.3 }}</td>
<tr>
{% endfor %}
</tr>
</tbody>
</table>
</body>
</html>
該網(wǎng)頁提示輸入?yún)?shù),并把查詢數(shù)據(jù)庫結(jié)果用表格展示出來,此外,為了測試靜態(tài)文檔目錄,引入了一個(gè)js文檔
6.增加static目錄,存放img、css、js等靜態(tài)文檔
與cmdb同級建立目錄static,目錄下建imgs,css,js三個(gè)子目錄

然后修改mysite\setting.py文件,增加以下內(nèi)容
# Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.0/howto/static-files/ STATIC_URL = '/static/' STATICFILES_DIRS=( os.path.join(BASE_DIR, 'static'), )
這樣index.html文檔中就可以引用圖片,css,js等靜態(tài)文檔了
7.重啟django服務(wù)器,在瀏覽器欄輸入
http://127.0.0.1:8000/index/
注意后面/index/不能缺少
如果出現(xiàn)跨域禁止,修改mysite\setting.py,注釋掉以下這行
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
'django.middleware.csrf.CsrfViewMiddleware',這行注釋掉即可
8.看到成果了

網(wǎng)頁根據(jù)你輸入的開始和條數(shù)展示數(shù)據(jù)庫查詢記錄
注意本項(xiàng)目的windowsserver2012上并沒有安裝mysql數(shù)據(jù)庫,查詢連接的是另外一臺(tái)電腦上的linux系統(tǒng)中的mysql.
希望本文所述對大家基于Django框架的Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python批量獲取并保存手機(jī)號歸屬地和運(yùn)營商的示例
這篇文章主要介紹了Python批量獲取并保存手機(jī)號的歸屬地和運(yùn)營商的示例,幫助大家更好的利用python處理數(shù)據(jù),感興趣的朋友可以了解下2020-10-10
Python簡單檢測文本類型的2種方法【基于文件頭及cchardet庫】
這篇文章主要介紹了Python簡單檢測文本類型的方法,結(jié)合實(shí)例形式分析了基于基于文件頭及cchardet庫兩種文本類型檢測的方法,需要的朋友可以參考下2016-09-09
淺談tensorflow使用張量時(shí)的一些注意點(diǎn)tf.concat,tf.reshape,tf.stack
這篇文章主要介紹了淺談tensorflow使用張量時(shí)的一些注意點(diǎn)tf.concat,tf.reshape,tf.stack,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
python讀取npy文件數(shù)據(jù)實(shí)例
npy文件用于存儲(chǔ)重建ndarray所需的數(shù)據(jù)、圖形、dtype?和其他信息,下面這篇文章主要給大家介紹了關(guān)于python讀取npy文件數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
使用 Supervisor 監(jiān)控 Python3 進(jìn)程方式
今天小編就為大家分享一篇使用 Supervisor 監(jiān)控 Python3 進(jìn)程方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12

