初識DJango框架

小白必會三板斧

  • HttpResponse:返回字符串
  • render:返回HTML頁面
  • redirect:重定向

靜態文件配置

什麼是靜態文件

網站所用到的css

  • 本身寫好js
  • 本身寫好css
  • 第三方的框架 bootstrap、fontwesome、sweetalert

一般狀況下 網站所用到的靜態文件資源 統一都放在static文件夾下html

STATIC_URL = '/static/'是訪問靜態資源的接口前綴,也就是說,'/static/'就像一個令牌,只要是去訪問靜態資源,就必須先通過'/static/',否則的話就沒法找到,只要你想訪問靜態資源 你就必須以static開頭。python

手動配置靜態文件訪問資源

settings.py中配置mysql

STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static'), os.path.join(BASE_DIR,'static1'), ]

接口前綴 動態解析

有下面的代碼,你就不必定必須按照static去訪問靜態資源,多是其餘的項目經理規定好的,eg:xxxsql

{% load static %}
    <link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}"> <script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script>

form表單

action參數能夠寫的形式

  • 不寫:默認朝當前地址提交
  • 只寫後綴/index/
  • 寫全路徑

==注意:==數據庫

form表單默認朝後端提交的方式 默認是get請求django

get請求攜帶參數的方式 是在url後面eg:url?username=admin&password=213213213213213bootstrap

缺點

  • 不安全
  • get請求攜帶的參數有大小限制(最大不能超過4KB左右)

ps:前期你若是要提交post請求 你就去settings.py文件註釋掉一箇中間件後端

中間件

request對象及方法

什麼是request對象

request對象主要作先後端數據交互安全

如何獲取請求方式

1)獲取post請求攜帶的數據

request.POST

2)獲取get請求攜帶的數據

request.GET

getpost在後端獲取用戶數據的時候 規律是同樣的

<QueryDict: {'username': ['admin', 'yjy'], 'password': ['123']}> yjy <class 'str'> 123 <class 'str'>

request.POST.get('username')默認只取列列表的最後一個元素,若是你想將列表完整的取出 你必須用getlist()

pycharm中django鏈接數據庫

django鏈接MySQL

第一步:配置文件中配置

DATABASES = {
                    'default': { 'ENGINE': 'django.db.backends.mysql', # 指定數據庫 MySQL postgreSQL 'NAME': 'yjy', # 到底使用哪一個庫 'USER':'root', 'PASSWORD':'root', 'HOST':'127.0.0.1', 'PORT':3306, 'CHARSET':'utf8' } }

第二步 :須要注意的點

django默認使用的是mysqldb鏈接數據庫 可是該模塊不支持了,因此你要告訴django不要用mysqldb該用pymysql鏈接

你能夠在項目名下面的__init__.py

也能夠在應用名下面的__init__.py文件中指定

import pymysql pymysql.install_as_MySQLdb()

pymysql設置

django orm介紹

orm對象關係映射

數據庫的表
對象 表的記錄
對象獲取屬性 記錄的某個字段對應的值

優缺點:

​ 優勢:可以讓一個不會操做數據庫的人也可以簡單快捷去使用數據庫

​ 缺點:因爲封裝程度過高,可能會致使呈持續的執行效率偏低

注意事項:

​ django的orm不會自動建立庫,庫須要本身手動建立
​ 表會自動建立 咱們只須要書寫符合django orm語法的代碼便可

怎樣去建立一張表?

​ 去應用下所在的models.py中書寫類

from django.db import models # Create your models here. class Userinfo(models.Model): # 設置id字段爲userinfo表的主鍵 id int primary key auto_increment id = models.AutoField(primary_key=True) # 在django中 你能夠不指定主鍵字段 django orm會自動給你當前表新建一個名爲id的主鍵字段 # 設置username字段 username varchar(64) CharField必需要指定max_length參數 username = models.CharField(max_length=64) # 在django orm中 沒有char字段 可是django 暴露給用戶 能夠自定義char字段 # 設置password字段 password int password = models.IntegerField()

數據庫遷移(同步)命令[很重要!!!]

python manage.py makemigrations  # 不會建立表 僅僅是生成一個記錄 將你當前的操做記錄到一個小本本上(migrations文件夾上) python manage.py migrate # 將你的orm語句真正的遷移到(同步)到數據庫中 

只要你在models.py中修改了跟數據庫相關的代碼 你就必須從新開始執行上面兩條命令,他真的很重要

字段和數據的增刪改查

字段的增刪改查

增:

在models.py中增

phone = models.BigIntegerField(default=110) # 新增的字段 能夠提早設置默認值 addr = models.CharField(max_length=64,null=True) # 新增的字段 能夠設置爲空

刪:

直接註釋,提交django遷移命令,不推薦使用

直接在代碼中改,提交django遷移命令就行

直接看代碼有什麼字段就行了啊

數據(記錄)的增刪改查

原生SQL:

insert into userinfo(username,password) values('admin','666');

ORM:

方式一:

obj= userinfo(name='yjy',password=123) obj.save()

方式二:推薦使用

obj = userinfo.objects.create(name='yjy',password=123)

原生SQL:

delete from userinfo where name='admin';

ORM:

刪除單條數據

obj=userinfo.object.first()
obj.delete()

刪除QuerySet只能給的多條數據(用的比較多)

userinfo.object.filter(pk=edit_id).delete()

刪除全部

models.object.all().delete()

原生SQL:

update userinfo set name='admin' where name='yjy';

ORM:

修改單條數據

#獲取記錄對象 obj= userinfo.objects.filter(name='yjy')[0] #修改記錄對象屬性的值 obj.name='YJY' #從新保存 obj.save

修改全部記錄:推薦使用

userinfo.object.filter(pk=edit_id).update(name='YJY')

原生SQL:

select * from userinfo where username='yjy' and password=123;

ORM:

res = models.Userinfo.objects.filter(username=username,password=password).first()

查詢數據get與filter的區別

get:

​ 當查詢條件不存在的時候 會直接報錯

​ 若是存在會直接給你返回 數據對象自己

filter:

​ 當查詢條件不存在的時候 不會報錯而是返回一個空

​ 當條件存在的狀況下 不管數據有幾條返回的都是列表套對象的數據格式

​ filter能夠當多個查詢條件 而且是and關係

​ filter的結果支持索引取值,可是不支持負數取值,它讓你用它本身封裝的方法eg:first()

# user_obj = res[-1] # 你能夠將filter查詢出來的結果當作列表去對待 支持正數的索引取值和切片 不支持負數 user_obj = res.first() # 取queryset第一個元素
相關文章
相關標籤/搜索