# Django

# 项目和应用

django 遵循MVC思想,通过django-admin startproject 项目名 创建项目,会在当前目录下生成一个manage.py文件,作为程序的命令行工具入口

然后生成 项目名 的文件夹,里面有项目的的相关配置:

  • manage.py 一个让你用各种方式管理 Django 项目的命令行工具。
  • init.py 一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包
  • settings.py 是项目的整体配置文件。
  • urls.py 是项目的URL配置文件。
  • wsgi.py :作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。
  • asgi.py :作为你的项目的运行在 ASGI 兼容的 Web 服务器上的入口

这只是项目的配置,还需要有应用(类似java中的模块),执行python manage.py startapp 应用名称创建应用

  • init.py 是一个空文件,表示当前目录news可以当作一个python包使用。
  • tests.py 文件用于开发测试用例,在实际开发中会有专门的测试人员,这个事情不需要我们来做。
  • models.py 文件跟数据库操作相关。
  • views.py 文件跟接收浏览器请求,进行处理,返回页面相关。
  • admin.py 文件跟网站的后台管理相关。
  • migrations 模型类同步到数据库生成的迁移文件

然后在项目的settings.py中注册应用

INSTALLED_APPS = (应用名)

启动项目

python manage.py runserver

# 模型类

django不像我们开发springboot应用,需要先创建表,在django中,直接创建在 models.py 添加 entity 对象,对象继承django.db的models.Model即可。

from django.db import models 
class NewsInfo(models.Model):
    title = models.CharField(max_length=20) 
    content = models.TextField()
    b_date = models.DateField()

都支持哪些字段,参考官网

然后需要将model对象同步到数据库中,这个需要两步

  1. 生成迁移文件:根据模型类生成创建表的迁移文件。
    python manage.py makemigrations
    

    迁移文件会存储在migrations

  2. 执行迁移:根据第一步生成的迁移文件在数据库中创建表。
    python manage.py migrate
    

WARNING

生成的数据表的默认名称为: 应用名字_类名

数据操作:

  • 获取所有:类.objects.all()
  • 新建对象:实例.save()
  • 查询指定参数:类.objects.get(id=1)
  • 修改:对象改了属性值以后再保存一下
  • 删除:对象.delete()

# 后台管理

自带了一个后台, 能管理模型

  1. 先创建用户 python manage.py createsuperuser
  2. 启动服务 python manage.py runserver 7777
  3. 注册模型类
    from django.contrib import admin 
    from .models import newsInfo
    admin.site.register(newsInfo)
    

# 视图

使用视图两步操作

1. 定义视图函数
2. 配置URLconf
  1. 定义视图 视图是一个Python函数,定义在views.py中。

    视图的必须有一个参数,一般叫request,视图必须返回HttpResponse对象,HttpResponse中的参数内容会显示在浏览器的页面上。

    打开news/views.py文件,定义视图index如下

    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse('这个是index页面')
    
  2. 配置url

    • 查找视图的过程 请求者在浏览器地址栏中输入url,请求到网站后,获取url信息,然后与编写好的URLconf逐条匹配,如果匹配成功则调用对应的视图函数,如果所有的URLconf都没有匹配成功,则返回404错误。
    • 配置视图
      1. 在应用中定义URLconf
        from django.conf.urls import url 
        from news import views 
        urlpatterns = [
            url(r'^index', views.index),
        ]
        
      2. 包含到项目的URLconf中
        from django.conf.urls import include, path 
        from django.contrib import admin
        
        urlpatterns = [
            path(r'^admin/', include(admin.site.urls)), 
            path(r'^',include('news.urls')),  # 应用名.urls.py,省略后缀了。
        ]
        

# 模板

类似springboot项目里面resources文件夹下的templates

需要在settings.py文件里面设置TEMPLATES的DIRS值

视图响应模块

from django.shortcuts import render

def index(request):
    context={'title':'新闻列表','list':range(10)} 
    return render(request,'news/index.html',context)
Last Updated: 12/10/2024, 1:57:19 PM