• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
武纪亨
博客园    首页    新随笔    联系   管理    订阅  订阅
Django基础内容介绍

内容回顾

  • 纯手撸web框架

    借助于scoket模块启动服务端
    针对http协议数据自己人为处理(切割)
    
  • 借助于wsgiref模块

    内部封装了socket以及针对http格式数据的处理
    
  • 代码优化

    1.先在一个py文件中拆分代码
    2.根据功能的不同拆分成了不同的py文件和文件夹
    """拆分完成后 以后需要扩展功能 只需要在urls.py和views.py修改即可"""
    
  • 动静态网页

    核心就在于网页上数据的来源
    
  • jinja2模板语法

    能够支持后端将数据传递给html页面并且在该页面上使用类似于后端的语法来操作数据
    {{ name }}
    {% for i in name_list %}
    {% endfor %}
    
  • python主流web框架

    django
    flask
    tornado
    
  • Django下载与使用

    pip3 install django==1.11.11
    
    命令行操作
    	django-admin startproject mystite
        cd mysite
        python36 manage.py runserver ip:port
    	python36 manage.py startapp app01
        
    """
    django项目与app之间的关系
    	django项目是空壳子 app才是真正的核心 相当于一个独立的功能模块
    	eg:django相当于一所大学 app相当于二级学院
    """
    
    # django启动报错的各种问题
    	1.python解释器问题
        	widgets.py多了个逗号
    	2.由于版本问题导致配置文件配置项错误
        	[os.path.join(BASE_DIR,'templates')]
    	3.计算机名称和py文件等名称尽量不要使用中文
        
    # 命令行操作不会自动帮你创建templates文件夹并且也不会在文件中配置
    

    内容概要

  • django主要目录结构

  • django小白必会三板斧

  • 静态文件配置(登录功能)

  • requests对象方法

  • pycharm链接MySQL

  • django链接MySQL

内容详细

django主要目录结构

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',
			# 简写
			'app01'
	]
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页面 并且提供模板语法
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.浏览器缓存
	settings
		network
			disable cache
"""

静态文件配置

# 利用django编写用户登录功能
	'''为什么前段请求不到后端的框架资源:我们没有开设对应的资源接口'''
    针对静态资源的路径开设无需在urls.py中指定 只需要在配置文件指定即可
    STATIC_URL = '/static/'
    STATICFILES_DIRS = [
    	os.path.join(BASE_DIR,'static')
	]
    
# 什么事静态文件
	不会频繁修改的文件
    	css文件、js文件、第三方框架文件、图片
# django存储静态文件
	static文件夹
    	该文件内部还可以依据不同的功能划分不同的区域
        	css文件夹
            js文件夹
            img文件夹
            others文件夹
            
# 进阶关系
	STATIC_URL = '/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表单重要参数

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() # jason
    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

database选项-new-Data Source-选择数据库

django链接MySQL(重点)

# 第一步配置
DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'db8',
        'USER':'root',
        'PORT':3306,
        'HOST':'127.0.0.1',
        'PASSWORD':'123',
        'CHARSET':'utf8'
    }
}
# 第二部配置(3.6及以下解释器 需要额外的配置)
import pymysql
pymysql.install_as_MySQLdb()
'''只要是__init__文件即可 项目的 应用的都可以'''
posted on 2022-03-01 21:01  Henrywuovo  阅读(42)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3