p4第二单元 路由和视图

p4第二单元 路由和视图,第1张

初始django下 1.创建django项目

先下载django:pip install==2.2.2
django-admin startproject 项目名
运行项目:python manage.py runserver

2.常见的请求方式

GET :查看数据
PUT:修改数据
POST:添加数据
DELETE:删除数据

3.常见的状态码

200:成功
400:客户端请求错误
404:客户端资源错误

4.创建子应用

python manage.py startapp 应用名

4.1在views.py文件编写一个函数
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello world")
4.2在urls.py文件配置路由
from myapp import views

# 主路由
urlpatterns = [
    path('admin/', admin.site.urls),
    path('myapp/',views.index),
]
5.模板配置
'DIRS': [os.path.join(BASE_DIR, 'templates')],
5.1在项目下创建一个template文件夹,里面在创建一个index.html文件



    
    hi


真不错

今天这个天气是晴天

5.2视图渲染
from django.shortcuts import render


def index(request):
    return render(request, 'index.html')
5.3模版变量渲染



    
    hi


    真不错
    

今天这个天气是{{ weather }}

6.模版语句循环、分支 for 标签 循环列表
{% for var in sequence %}
    {{ var }}
{% endfor %}
循环字典
{% for key,value in sequence.items %}
    {{ key }}:{{ value }}
{% endfor %}
if标签
{% if test_list %}
    列表不为空
{% elif test_dict %}
    列表为空,字典不为空
{% else %}
    列表字典均为空
{% endif %}
7.迁移

python manage.py makemigrations

执行迁移

python manage.py migrate

7.1在models.py文件写入类
# 模型类 会自动生成 id字段
class Game(models.Model):
    name = models.CharField(max_length=20, verbose_name='姓名')
    atk = models.IntegerField(verbose_name='伤害值')
    level = models.IntegerField(verbose_name='等级')
7.2在settings.py文件中注册子应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'myapp',  #
8.创建超级用户并添加数据
1.创建超级用户:python manage.py createsuperuser

2.在子应用的admin.py文件中添加代码,注册表,不然admin控制台没办法管理这个表

from django.contrib import admin
from myapp.models import Game
# Register your models here.
admin.site.register(Game)


3.运行项目,在admin页面添加数据
9.视图代码编写
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import Game
# Create your views here.

# 视图函数
def MyView(request):
    # 3.MVT三层联动
    # 通过Game模型类,取出数据块中的数据(ORM *** 作),取出所有角色信息
    game_data = Game.objects.all()
    content = {  # 传递给页面的数据,字典
        'games': game_data,
    }
    # render返回一个模板页面
    return render(request, 'index2.html', content)


# def MyView(request):
#     # 1.返回一个相应
#     return HttpResponse('这是我的第一个视图')
#
#     # 2.返回一个模板页面,并传递了一些数据
#     content = {  # 传递给页面的数据,格式是字典
#         'money': 100,
#         'scores': [100, 99, 95, 80, 85],
#         'game': {
#             'name': '龙傲天',
#             'atk': '999',
#             'def': '10',
#             'level': '18',
#         }
#     }
#     return render(request, 'index.html', content)
10.配置路由
from django.contrib import admin
from django.urls import path
from myapp import views

# 主路由
urlpatterns = [
    path('admin/', admin.site.urls),
    path('myview/', views.MyView),
]
报错及处理方式
1.
query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'

报这个错,点开路径把里面的decode改为encode

2.
Did you install mysqlclient?

没有安装mysql
在主应用init里面安装

import pymysql
pymysql.install_as_MySQLdb()

3.
No changes detected
没有发生变化
没有在setting的INSTALLED_APPS里面注册子应用  '子应用名字'

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/740157.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存