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.写用户登录逻辑代码
   

 

posted @ 2021-12-07 19:10  一叶松  阅读(1255)  评论(0编辑  收藏  举报