Django主要目錄結構


Django主要目錄結構

# 以創建mysite項目為例

mysite文件夾
mysite同名文件夾
  settings.py
      # django暴露給用戶可以自定義配置的文件
        urls.py
      # 存放路由(路徑)與函數(視圖函數)對應關系
        wsgi.py
      # 依賴於wsgiref模塊的socket啟動部分
   manage.py文件
  # django的入口(啟動)文件
   app01文件夾
  migrations文件夾
      # 里面存放ORM針對數據庫相關的記錄,相當於日志
       admin.py
      # django自帶的后台管理功能
       apps.py
      # 每個應用的獨立標識
       models.py
      # 與數據庫打交道的文件(ORM)
       tests.py
      # 自帶的測試文件
       views.py
      # 該app對應的主體功能(函數 類)
   db.sqlite3
  # django自帶的小型數據庫(針對日期格式無法精准存取)
 
"""
1.創建app之后一定要去settings.py中注冊
INSTALLED_APPS = [
# 全寫
  'app01.apps.App01Config',
  # 簡寫
  'app02'
]
2.templates路徑配置
TEMPLATES = [
  {
    'DIRS': [os.path.join(BASE_DIR, 'templates')]
    }
"""
django是可以自動重啟的 但是有時候自動重啟的反應時間有點長

django小白必會三板斧

1.HttpResponse
HttpResponse('hello django!')
暫且理解為可以返回給前端瀏覽器文本類的數據
   
   
2.render
render(request,'index.html',{'n1':[1,2,3]})  # 精准傳(復雜但節省資源)
   render(request,'index.html',locals())  # 范圍傳(簡單但不節省資源)
返回給前端瀏覽器html頁面 並且提供模板語法(不需要借助jinja2模塊)
   # 注:定義函數時記得加個request形參
  html文件接收其他參數 {{'n1'}}
支持在html模板語法:遍歷直接寫個for按table鍵自動補全
   
3.redirect
重定向
   redirect('https://www.baidu.com')  # 可以寫全稱
   redirect('/admin/')  # 也可以只寫后綴(默認補齊當前IP和PORT)
 
urls.py   存放路由與視圖函數對應關系 路由層
views.py  存放視圖函數(核心業務邏輯)     視圖層
templates文件夾  存放html文件           模板層
models.py  存放與數據庫相關的代碼(ORM)   模型層

"""
1.django默認的端口號是8000
在同一台機器同一時間如果需要運行多個django項目 需要修改端口號
python3 manage.py runserver ip:port
pycharm自主修改
2.瀏覽器緩存(django修改之后沒有效果)

修改谷歌瀏覽器設置,打開檢查界面會自動清除緩存

打開檢查界面
settings
networks
disable cache(勾選)
"""

靜態文件配置

# 利用django編寫用戶登錄功能

# 什么是靜態文件
不會頻繁更改的文件
  css文件、js文件、第三方框架文件、圖片
# django存儲靜態文件
我們需要新建一個static文件夾用來存放靜態文件
   
static文件夾
  該文件內部還可以依據不同的功能划分不同的區域
      css文件夾
           js文件夾
           img文件夾
           others文件夾

'''為什么前端請求不到后端的框架資源:我們沒有開設對應的資源接口'''
   
   # 如何開放接口
   一般接口我們需要在urls.py文件中建立對應關系,針對靜態資源的路徑開設無需在urls.py中指定 只需要在配置文件(setting.py)指定即可
   
   找到這一行:STATIC_URL = '/static/',在底下添加
   STATICFILES_DIRS = [
  os.path.join(BASE_DIR,'static')
]
   /static/bootstrap-3.4.1-dist/js/bootstrap.min.js
   
   這樣只要我們的路徑輸入正確就可以訪問static文件夾下的內容
# 注:兩個static表示的作用並不相同

# 進階關系
   STATIC_URL = '/static/'  # 接口前綴(要想訪問靜態資源 那么路徑的前綴就必須是這里指定的/static/)   接口前綴可以修改,但我們一般不會修改
   
   # 進行路徑的拼接,將static文件夾添加到配置文件(可以將static文件夾下所有的資源開設給外界)
   STATICFILES_DIRS = [
       os.path.join(BASE_DIR,'static'),  # 文件夾名稱
       os.path.join(BASE_DIR,'static1'),  # 文件夾名稱
       os.path.join(BASE_DIR,'static2')  # 文件夾名稱
  ]
   """
  接口前綴正確之后 拿着后面的路徑去列表中
  從上往下依查找對應的資源 找到了就不再繼續往下找
  """

# 接口前綴動態匹配
# 固定搭配,記住即可,在html文件導入靜態文件的時候
{% load static %}
   <link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
   <script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>

網絡請求方式

1.get請求
向別人索要數據
   eg:瀏覽器地址欄輸入www.baidu.com回車
       get請求沒有請求體
       get請求也可以攜帶一些的額外的參數 但是大小有限制(2KB)
      url?xxx=yyy&aaa=bbb
           
2.post請求
向別人提交數據
   eg:用戶注冊登錄填寫完身份數據之后提交
       post請求有請求體
       post請求也可以攜帶數據 並且大小沒有限制 在請求體中

form表單重要參數

 <form action="" method="post">
   
</form>

action  # 控制數據提交的地址
1.寫全路徑  https://www.baidu.com
2.寫后綴(ip和端口自動補全當前服務器)    /index/
   3.不寫  提交給當前頁面所在的地址
method  # 控制數據提交的方式
get  form表單默認是get請求
   post
 
"""
注意使用django前期在提交post請求之前需要去配置文件中注釋掉一行代碼
MIDDLEWARE = [
  # 'django.middleware.csrf.CsrfViewMiddleware',
]
"""

requests對象方法

request.method  # 獲取請求方式名(純大寫的字符串)

request.POST  # 獲取post請求提交的普通數據(文件無法獲取)
request.POST.get() # 默認只會取列表最后一個元素
   request.POST.getlist() # 獲取所有元素
request.GET  # 獲取get請求url問號后面的數據
request.GET.get()
   request.GET.getlist()
   
def login(request):  
   if request.method == 'POST':
       username = request.POST.get('username')  # 默認只會取列表最后一個元素
       password = request.POST.get('password')
       if username == 'jason' and password == '123':
           return HttpResponse('OK')
       else:
           return HttpResponse('用戶名或密碼錯誤')
   return render(request, 'login.html')

pycharm鏈接MySQL

需要借助pymysql模塊

django鏈接MySQL

# 第一步配置
DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.mysql',
       'NAME': 'db4_3',
       'USER':'root',
       'PORT':3306,
       'HOST':'127.0.0.1',
       'PASSWORD':'123',
       'CHARSET':'utf8'
  }
}
# 第二步配置(3.6及以下解釋器 需要額外的配置)
import pymysql
pymysql.install_as_MySQLdb()
'''只要是__init__文件即可 項目的 應用的都可以'''

簡易登錄頁面

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  {% load static %}
   <link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
   <script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>

</head>
<body>
<div class="container">
   <div class="row">
       <h1 class="text-center">登錄界面</h1>
       <div class="clo-md-8 col-md-offset-2">
           <form action="" method="post">
               <p>username:
                   <input type="text" class="form-control" name="username">
               </p>
               <p>password:
                   <input type="password" class="form-control" name="password">
               </p>
               <input type="submit" class = "btn btn-success btn-block" value="登錄">
           </form>


       </div>
   </div>
</div>

</body>
</html>

總結

1.利用pycharm創建一個django項目和app
python3 manage.py startapp app01(命令行創建)
# 注:新創建的app需要添加到配置文件(insert)
  也可以在創建django項目是自動創建一個app(一個app相當於一個功能)
2.新增一個login方法
在url.py和views.py文件添加對應關系
   "定義函數時要記得添加形參request"
   小白必會三板斧
   return Httpresponse() # 返回字符
return render(request,'html文件') # 返回html界面
可以在后面以字典形式添加其他參數(無需借助jinja2模塊)
   html文件采用{{}}形式接收,同時支持模塊語法
   return redirect() # 重定向,可以轉到其他界面
return redirect('http://www.baidu.com') 完整格式
return redirect('/admin') 會自動將本界面ip+port拼接
3.編寫html文件
class='containter'
  class='row'
      h1:text-center
      class='col-md-8 col-md-offset-2'
     form表單
  參數:
     input標簽 class='form-contol' # 與用戶交互
     submit標簽  btn btn-success btn-block
         

4.靜態文件
新增一個文件夾存放靜態文件static
  可以按功能分為css文件、js文件等等
# 解決無法識別導入html文件的css、js文件,原因是我們只能訪問在url有對應關系的
對ststic文件夾開放接口
打開setting配置文件,找到STSTIC = '/static/'
   在底下添加
   STATICFILE_DIRS = [
       os.path.join(BASIC_DIR,'static')
  ]
# 我們將ststic文件夾底下的文件添加到配置,只要是以/static/開頭且在ststic文件夾下的路徑都能夠訪問

# 接口前綴動態匹配
固定搭配
{% load ststic %}
  {% static '' %}
   
   在html文件在導入靜態文件時使用
    {% load static %}
   <link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
   <script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>
   
5.form表單重要參數
<form action="" method="post">
   
    </form>

   action  # 控制數據提交的地址
       1.寫全路徑  https://www.baidu.com
       2.寫后綴(ip和端口自動補全當前服務器)    /index/
       3.不寫  提交給當前頁面所在的地址
   method  # 控制數據提交的方式
       get  form表單默認是get請求
       post
   
6.獲取提交方式
request.method # 根據提交方式返回不同的界面
   
7.獲取提交的普通數據(不支持文件)
request.POST.get('username') # 獲取POST請求提交的數據據,'username'是根據input標簽后面name方法的值
   
   request.GET.get('') # 獲取GET請求的數據
   
   request.POST.get() # 默認只會取列表最后一個元素
   request.POST.getlist() # 獲取所有元素
   
   """
注意使用django前期在提交post請求之前需要去配置文件中注釋掉一行代碼
MIDDLEWARE = [
  # 'django.middleware.csrf.CsrfViewMiddleware',
]
否則會出現403
"""
   
8.寫用戶登錄邏輯代碼
   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM