Django初始

Django框架介绍

状态码

**200**客户端的请求服务端正常完成
**301**客户端请求的资源已被永久移动到新的 URL
**302**客户顿请求的资源被临时移动,客户端继续使用原有 URL;常用于三方登录之后的跳转
**400**客户端的请求语法错误,或无法解析请求
**401**请求需要经过身份验证
**402**保留状态码,为以后使用做准备的呢
**403**服务端直接拒绝客户端的请求
**404**客户端请求的资源找不到
**502**服务端内部错误,服务端错误的网关

安装django

win+r 命令窗口输入: pip install django==2.2.2 
pip list
创建项目  ---桌面创建文件夹--文件夹CMD 命令行输入:
django-admin startproject project1
启动项目  ---在python小黑框
python manage.py runserver 
搜索命令
python manage.py --help
创建子应用  ---子应用的意义:应用是一个专门做某件事的网络应用程序,比如博客系统中的用户功能部分,一个考试系统中管理试卷的部分。
python manage.py startapp myapp 
子应用视图逻辑:
在views.py中我们通过编写函数的形式,接收用户请求的request并返回一个response,这个response通过HttpResponse方法进行返回,这个方法很简单,返回的就是一个html字符串

创建表
生成迁移
python manage.py makemigrations
执行迁移
python manage.py migrate

模版配置

项目内的settings.py文件,找到TEMPLATES选项修改其中的DIRS属性,在这里添加我们的html文件夹位置
'DIRS': [os.path.join(BASE_DIR,"templates")], 
#内容内的templates为新建的文件夹名称 此文件夹用于存放html文件
创建模版:
在templates内创建html文件
视图渲染:
需要在创建的子应用内的views.py实现页面的渲染
from django.shortcuts import render
def index(request):
    return render(request, 'index.html')

创建模版

在templates内创建html文件

视图渲染

需要在创建的子应用内的views.py实现页面的渲染
from django.shortcuts import render
def index(request):
    return render(request, 'index.html')

模版变量渲染

render可以用来返回一个模板页面,并将一个字典组合成的模板变量传递到模板页面上,完成页面的渲染

# app.views.py
from django.shortcuts import render
def index(request):
	#content是存储数据的变量名
    content = {'weather': '晴天'}
    #放在render用于讲数据传递给html页面可通过{{}}实现渲染
    return render(request, 'index.html', content)
    
方便一些的写法还可以直接用locals方法,将当前函数作用域下的变量及值组合为字典
	weather = '晴天'
	return render(request,'index.html',locals())

模版语句循环、分支

for 标签

模板中的标签{% for %}与Python中的for循环类似,要记得有闭合模板标签{{ endfor }}

模板语言中,不会出现索引超出范围的IndexError或者Key值不存在的KeyError,取不出任何东西则只是一个空

{% for var in sequence %}
    {{ var }}
{% endfor %}

数据也可以以键值对的形式进行传递 
取出方式:
{% for key,value in game.items %}
            {{ key }}:{{ value }}
{% endfor %}
if 标签

在模版中,可以通过{% if %}标签语法来进行模板变量的值判断;

{% if test_list %}
    列表不为空
{% elif test_dict %}
    列表为空,字典不为空
{% else %}
    列表字典均为空
{% endif %}

静态资源路径配置

​ 在settings中配置静态文件目录路径,添加如下内容

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
# STATICFILES_DIRS 该配置项用来告诉 django 在查找静态资源时,应该访问哪个目录
可以在html页面插入图片
<img src='{% static "img/1.jpg" %}' alt="图片">

配置数据库相关内容

settings

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 使用mysql数据库
        'HOST':'localhost', # 主机
        'PORT':3306,    # 端口
        'USER':'root',   # 用户名
        'PASSWORD':'password',  # 数据库密码
        'NAME':'game', # 数据库
    }
}

ORM映射

模型类编写

需要写在子应用(myapp)中的models.py文件中

from django.db import models
# Create your models here.
# 模型层 会自动生成 id字段
class Game(models.Model):
    # CharField 字符串 max_length 最大长度 verbose_name  后台管理的字段名
    name = models.CharField(max_length=20,verbose_name="角色名")
    # IntegerField  整型
    atk = models.IntegerField(verbose_name="攻击力")
    level = models.IntegerField(verbose_name="等级")

当某个子应用APP涉及到了数据库的使用时,要记得在settings文件中进行配置

INSTALLED_APPS=["子应用名"] #注册子应用
安装mysql
import pymysql
pymysql.install_as_MySQLdb()
生成迁移文件
python manage.py makemigrations # 创建数据库迁移文件
执行迁移
python manage.py migrate # 根据数据库迁移文件生成对应 SQL 语句并执行
admin控制台
创建超级用户
python manage.py createsuperuser #用于创建超级用户对表格进行处理
注册表格
要在子应用的admin.py填写
from django.contrib import admin
from myapp.models import Game

# Register your models here.
admin.site.register(Game)
添加数据
要在admin路由内登录超级用户给表格添加内容
MVT三层联动

需要在views.py内获取数据

from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import Game

# Create your views here.

def MyView(request):
    # MVT三层联动
    # 通过Game模型类,取出数据块中的(DRM操作),
    # 取出所有角色信息
    game_data = Game.objects.all()
    content = {
        'games':game_data,
    }
    return render(request,'index2.html',content)

获取数据存放在games内 就可以在html也页面进行渲染

<body>
    <h3>展示数据库中的角色信息</h3>
    {% for game in games %}
        {{ game.id }} {{ game.name }} {{ game.atk }} {{ game.level }}<br>
    {% endfor %}
</body>
错误信息与解决方案
 File "C:\Users\86150\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\backends\mysql\operations.py", line 146, in
 last_executed_query
    query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'

找到路径内的decode 修改为encode
"'cryptography' package is required for sha256_password or caching_sha2_password
 auth methods"
RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods

安装cryptography
pip install cryptography
table 找不到  就执行迁移偏执迁移
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值