1-2.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之二
七、在項目下新建 templates 路徑
在工程上,右鍵,添加templates目錄
注意*:
此目錄下即用來存放我們的html文件;
此目錄一般是與app的主目錄是平級的。當然也可以建立在app的目錄下,主要取決于你的模板,一般是全局使用呢,還是專門服務于某個app;
請務必設置項目自動檢索此目錄,方法如下:
八、在項目下新建 static 路徑
此目錄下即用來存放我們的靜態文件:img、css等;
此目錄一般是與app的主目錄是平級的,也可自行選擇目錄;
請設置自動檢索此目錄,方法如下:
九、Django LANGUAGE_CODE和TIME_ZONE設置
將setting.py文件內
LANGUAGE_CODE = ‘en-us’
TIME_ZONE = ‘UTC’
修改為
LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'Asia/Shanghai'十、為MTV模型的各文件建立聯系
我們以 http://127.0.0.1:8000/index 簡單作下說明:
1.用戶提交Request請求:把瀏覽器中url地址提交給Django服務器
2.Request首先到達的淡藍色區域,你可以理解為Django項目中的 urls.py 文件,在此文件中會去根據你事先在 urlpatterns 列表中定義好的url路徑去確定 index/ 指向哪個 Views文件,即你編寫好的某個app目錄下的 views.py 文件
3.views.py 文件中的函數render(request,‘xxx.html’,model_Var) 將會獲取數據模型:Models 和 模板網頁:Templates,在三者的共同渲染下,給客戶端返回 Response,呈現出完整網頁。
具體方法
(1)在templates文件夾上右鍵,新建home.html文件,并輸入簡單內容。
(2)在urls.py 文件中添加路由路徑
(3)在views.py 文件中構造render(request,templates,model)函數
十一、編譯運行
十二、連接mySql數據庫并使用 models.py
settings.py配置信息的內容,其中DATABASES是用來管理數據庫配置的,默認是sqlite3數據庫,所以我們需要將其修改成mysql數據庫。
# Database # https://docs.djangoproject.com/en/2.0/ref/settings/#databases# 數據庫配置 默認的數據庫為sqlite # DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # } # } DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', # 數據庫引擎'NAME': 'django_mysql', # 數據庫名'USER': 'root', # 賬號'PASSWORD': 'root', # 密碼'HOST': '127.0.0.1', # HOST'POST': 3306, # 端口} }字段名稱代碼中都添加了相應說明,ENGINE為MYSQL數據庫引擎,這個當然不會憑空出現,需要我們去安裝
安裝pymysql
pip3 install pymysql項目中配置
在最開始的項目包下的__init__.py中進行如下配置
""" setting中的配置默認為sqlite3數據庫 當需要修改成MySql時 并且在setting.py的同級目錄的__init__.py 加入如下配置 否則會報錯: Error loading MySQLdb module. """ import pymysql pymysql.install_as_MySQLdb()如果mysql配置信息錯誤(用戶名、密碼、host等)控制臺會報如下異常
pymysql.err.OperationalError: (1045, "Access denied for user 'ROOT'@'localhost' (using password: YES)")在app(我的是myFirstWeb)文件的models.py文件中 創建Student(學生信息)和StudentUnion(社團信息)
models.py:數據模塊,用于數據庫設計
from django.db import models# Create your models here.""" 創建學生信息表模型 """"""該類是用來生成數據庫的 必須要繼承models.Model """class Student(models.Model):"""創建如下幾個表的字段"""# 學號 primary_key=True: 該字段為主鍵studentNum = models.CharField('學號', primary_key=True, max_length=15)# 姓名 字符串 最大長度20name = models.CharField('姓名', max_length=20)# 年齡 整數 null=False, 表示該字段不能為空age = models.IntegerField('年齡', null=False)# 性別 布爾類型 默認True: 男生 False:女生sex = models.BooleanField('性別', default=True)# 手機 unique=True 該字段唯一mobile = models.CharField('手機', unique=True, max_length=15)# 創建時間 auto_now_add:只有在新增的時候才會生效createTime = models.DateTimeField(auto_now_add=True)# 修改時間 auto_now: 添加和修改都會改變時間modifyTime = models.DateTimeField(auto_now=True)# 指定表名 不指定默認APP名字——類名(app_demo_Student)class Meta:db_table = 'student'""" 學生社團信息表 """class studentUnion(models.Model):# 自增主鍵, 這里不能設置default屬性,負責執行save的時候就不會新增而是修改元素id = models.IntegerField(primary_key=True)# 社團名稱unionName = models.CharField('社團名稱', max_length=20)# 社團人數unionNum = models.IntegerField('人數', default=0)# 社團負責人 關聯Student的主鍵 即studentNum學號 一對一的關系,on__delete 屬性在django2.0之后為必填屬性后面會介紹unionRoot = models.OneToOneField(Student, on_delete=models.CASCADE)class Meta:db_table = 'student_union'""" OneToOneField: 一對一 ForeignKey: 一對多 ManyToManyField: 多對多(沒有ondelete 屬性) """(1)啟動mysql服務,啟動服務,我們在終端執行如下命令:net start mysql
D:\PythonSourceCode\myDjango>net start mysql 請求的服務已經啟動。請鍵入 NET HELPMSG 2182 以獲得更多的幫助。D:\PythonSourceCode\myDjango>(2)服務啟動成功之后,需要登錄的時候輸入命令:
mysql -u root -p,在輸入密碼登錄。
(3)在利用models.py文件生成數據庫表之前,我們需要手動的先創建數據庫django_mysql支持中文,我們在終端執行如下命令:
create database django_mysql charset=utf8;
(4)創建完django_msql庫之后,我們在終端執行如下命令,他的作用是將models文件生成一個遷移文件
python manage.py makemigrations
(5)遷移文件生成完畢,在終端執行如下命令:
python manage.py migrate
會將遷移文件的內容作用到數據庫中,生成表或者修改字段屬性,控制臺輸出如下,則表示執行成功
D:\PythonSourceCode\myDjango>python manage.py migrate Operations to perform:Apply all migrations: admin, auth, contenttypes, myFirstWeb, sessions Running migrations:Applying contenttypes.0001_initial... OKApplying auth.0001_initial... OKApplying admin.0001_initial... OKApplying admin.0002_logentry_remove_auto_add... OKApplying admin.0003_logentry_add_action_flag_choices... OKApplying contenttypes.0002_remove_content_type_name... OKApplying auth.0002_alter_permission_name_max_length... OKApplying auth.0003_alter_user_email_max_length... OKApplying auth.0004_alter_user_username_opts... OKApplying auth.0005_alter_user_last_login_null... OKApplying auth.0006_require_contenttypes_0002... OKApplying auth.0007_alter_validators_add_error_messages... OKApplying auth.0008_alter_user_username_max_length... OKApplying auth.0009_alter_user_last_name_max_length... OKApplying auth.0010_alter_group_name_max_length... OKApplying auth.0011_update_proxy_permissions... OKApplying auth.0012_alter_user_first_name_max_length... OKApplying myFirstWeb.0001_initial... OKApplying sessions.0001_initial... OKD:\PythonSourceCode\myDjango>查看我們的django_mysql數據庫,其中student和student_union就是用models文件生成的表,其他的表是項目自動生成的,暫時可以先不用管,用Navicat Premium 15軟件連接mysql數據庫課,并查看django_mysql數據庫
至此Django利用models文件創建數據庫表的功能已經完畢。
十三、接下來用代碼的方式演示一下Django如何進行增刪改查
增加數據
為了提供一些測試數據,這里用for循環批量的加了幾條簡單的數據。
在views.py文件中添加:
urls.py 文件中 urlpatterns中配置
path('insert/', views.insert),編譯運行,瀏覽器中訪問http://localhost:8000/insert/ 瀏覽器顯示‘數據插入完畢
查詢數據庫,發現有5條數據,也就是插入成功
查詢數據
配置urls,瀏覽器訪問localhost:8000/find/
修改數據
""" 修改 """ def modify(request, studentNum):# 通過學號獲取student對象student = Student.objects.get(studentNum=studentNum)# 設置student的name為jackstudent.name = 'jack'student.save()return HttpResponse('修改成功.')urls.py 文件中 urlpatterns中配置文件中的配置如下
path('modify/<studentNum>', views.modify),修改學號4767882034的name為jack
刪除
""" 刪除 """ def delete(request, studentNum):student = Student.objects.get(studentNum=studentNum)student.delete()return HttpResponse('刪除成功.')urls.py 文件中 urlpatterns中配置文件中的配置如下
path('delete/<studentNum>', views.delete),總結
以上是生活随笔為你收集整理的1-2.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: turbo c相关文档
- 下一篇: 不同网段通过静态路由实现互通,华为S57