django jsonresponse_Django学习记录 -- 开始一个简单的项目

5cd0b71dc2fe607ca995220448c36195.png
  1. 准备好开发环境并且安装好Django框架之后,我们就可以开始一个项目了。本文现在使用的Django版本是最新的3.0版本,只用来学习使用。
  2. Django是一个重量级的框架,之所以称为重量级,原因就是Django内置的组件和功能十分的丰富,可以让你很简单的就开发出一个网站,这也是Django设计之初的目的。

创建Django项目

  • django-admin startproject 项目的名称 使用该命令就可以创建一个Django项目
  • 执行完该命令之后,会在你指定的项目文件夹中创建一下几个文件,这里做一下简单的说明

896bcfdce52946ae89273b2ba60c4f38.png
这是我自己创建的一个名为Myproject的项目
  • 从理论上将项目根目录起任何名字都可以,这个名字可以随意进行更改。
  • _init_.py: 将该项目当作一个python包
  • settings.py: 项目的配置文件,里面包含了很多关于项目的配置。
  • urls.py: 项目的路由配置,在该文件中定义路由匹配规则。
  • wsgi.py: 符合WSGI协议的web服务器的入口。
  • asgi.py: 兼容ASGI的Web服务器为您的项目提供服务的入口点
  • manage.py: 项目的管理文件和命令行工具

运行开发服务器

  • python manage.py runserver或者使用django-admin runserver运行服务器
  • 默认运行在127.0.0.1, 8000端口

本地化配置

  • 修改时区和语言:
      • LANGUAGE_CODE = 'zh-hans'
      • TIME_ZONE = 'Asia/Shanghai'

访问

  • 打开[浏览器[1]]

532c8ba3906b891af5f90d3b882fdde6.png
看到上面的就是运行成功了

关于manage.py和django-admin

  • manage.py会在每个Django项目中自动创建
  • 可以使用django-admin命令做和manage.py同样的事情,,使用django-admin的时候,需要配置DJANGO_SETTINGS_MODULE 环境变量,使其指向项目的配置文件。
  • 获取帮助信息
    • django-admin help: 列出所有命令列表
    • django-admin help --commands: 显示所有可用命令的列表
    • django-admin help command: 显示一个命令的详细信息
  • 检查版本
    • django-admin --version: 获取运行Django的版本号
  • 检查问题
    • django-amdin check appname appname: 运行Django自带的检查框架来检查运行问题
    • 可以指定appname,这将会检查具体的某一个应用,但是如果不指定应用名称的话,会默认检查全部的应用
  • 进入数据库shell
    • django-admin dbshell:运行数据库的命令行客户端
    • 如果你已经修改了配置文件的数据库,请确保配置中的账号和密码正确
  • 检查已经修改了哪些配置项
    • django-admin diffsettings:显示当前文件和默认设置文件的差异
    • 未出现在默认设置中的设置后面有###标识。
  • 进行数据库迁移
    • django-admin makemigrations:生成迁移文件
    • django-admin migrate: 执行数据库迁移
    • 当使用Django的数据库迁移之后,不要直接修改数据库,容易造成数据库字段和Django维护的迁移记录不一致,从而产生报错。
django-admin and manage.py | Django 文档 | Django​docs.djangoproject.com

创建子应用

  • python manage.py startapp 子应用名: 该命令将创建一个django子应用
  • 子应用的目录结构如下

7a81374890f5ac5b88f22f85e717027d.png
polls是子应用的名称
  • admin.py: 和后台管理相关的配置
  • apps.py: 当前子应用的信息
  • migrations目录:存放子应用的迁移数历史文件
  • models.py: 存放模型类
  • tests.py:编写测试
  • views.py: 编写视图函数
  • 这里说一下,默认创建的子应用并没有urls.py这个文件,但是我们会在子应用中使用,有两种方式创建
    • 直接在子应用文件夹中新建一个python文件(手动修改)
    • 修改django项目源代码(永久修改)
文件位置:site-packages/django/conf/app_template,可以将project template中的project_name中的urls.py-tpl文件复制到app_template目录中,这样就可以在使用创建子应用的命令时创建对应的文件。

编写视图函数

def index(request):
    """
        首页
    :param request: Django请求对象
    :return: response对象
    """
    return HttpResponse("Hello Django! This is index!")
  • request:请求对象,每个视图函数必须接收的参数
  • HttpResponse: 只能返回字符串新式的响应
  • JsonResponse: 只能返回json格式的响应,JsonResponse内部已经帮我们设置了响应的content_type为application/json,并且将传入的data使用json.dumps进行序列化。

进行路由匹配

  1. 在子路由中进行路由匹配
from django.urls import path
from . import views


urlpatterns = [
    path(r'', views.index, name='index'),
]

2. 在总路由中进行路由包含

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('polls', include('polls.urls')),
]
  • include()函数允许包含其他的url,每当遇到include()函数的时候,会截断与此项匹配的url部分,并且将生育的字符串发送到include包含的url中进行再次匹配。
  • path函数参数
path = partial(_path, Pattern=RoutePattern)

def _path(route, view, kwargs=None, name=None, Pattern=None):
    pass

route: url模式,正则表达式
view: 视图函数名,满足url模式就会调用对应的视图函数
kwargs: 传递给视图函数的关键字参数
name: url的命名,以便在其他地方引用,主要用于reverse()构建路由。

数据库的配置

  • 有关数据库的配置,在settings文件中的DATABASES配置项
  • Django默认使用的是sqlite数据库,如果需要修改为其他的数据库,比如mysql,需要做下面的改动
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'HOST': 'localhost',  # 连接的主机地址
        'PORT': 3316,  # mysql端口号
        'USER': 'root',  # 连接用户名
        'PASSWORD': 'root',  # 数据库密码
        'NAME': 'Myproject',  # 连接的数据库名
    }
}
  • 在进行数据库连接的时候,首先要确保对应的数据库已经存在,需要手动进行创建。

创建模型类

class Choice(models.Model):
    """
        选择模型类
    """
    question = models.ForeignKey(Question, on_delete=models.CASCADE, verbose_name='问题')
    choice_text = models.CharField(max_length=200, verbose_name='选择内容')
    votes = models.IntegerField(default=0, verbose_name='投票数')
  • 模型类需要继承自models.Model
  • 模型类属性表示字段名
  • 字段类型使用models.字段类型表示,选项参数会在稍后进行介绍
  • 可以在类中指定数据库的表明(稍后介绍),如果不指明表明的话,将会以应用名小写_模型类名来命名。
  • models.ForeignKey为当前的模型类定义了一个外键,和另一个模型类相关联。常见的关系有一对多,一对一,多对一三种
  • 模型类并不需要定义主键,主键由Django自动生成和维护。
  • Django自动给外键列增加_id,作为外键列的名称,是新版的特性。

注册安装子应用

  • 在配置文件的INSTALLED_APPS中添加下面的项
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',  # django默认的一些应用,不需要的话,可以注释或者是删除
    'polls.apps.PollsConfig',  # 添加我们创建的子应用
]

执行数据库迁移

  • 生成迁移文件: django-admin makemigrations
  • 完成迁移: django-admin migrate

参考

  1. ^浏览器 http://127.0.0.1:8000
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值