Django框架入门必看

入门

Django的安装可以看
Django安装

创建

进入pycharm,更改环境变量
image.png
进行配置
image.png
目录结构
image.png

settings.py详解

  • 调试模式下,我们更改代码会自动重启,不需要自己手动再去重启了
    image.png
    image.png

启动

python .\manage.py runserver
# 指定端口,默认是8000
python .\manage.py runserver 8001
# 让其他局域网用户能够访问,只能是0.0.0.0,不能改
python .\manage.py runserver 0.0.0.0:8001

要启动JavaScript调试会话,请按住Ctrl+Shift并单击URL链接。
image.png

数据迁移

  • 迁移的慨念:就是将模型映射到数据库的过程
生成迁移文件:python manage.py makemigrations
执行迁移:python manage.py migrate
  • 不需要初始化迁移文件夹,每个应用默认有迁移文件夹migrations
  • 打开右上角的Database管理器,将db.sqlite3拖到这里面,不能拖的话,就自己配置路径
  • 第一次要下载驱动程序
    image.png

创建应用

  • 一开始创建项目的时候可以顺便创建一个应用,如果要创建多个应用,就需要用命令
python manage.py startapp App(应用的名字,这里是App)

创建名称为App的应用
使用应用前需要将应用配置到项目中,在settings.py中将应用加入INSTALLED_APPS选项中
image.png

应用目录介绍:
init_.py:
	其中暂无内容,使得app成为一个包
admin.py:
	管理站点模型的声明文件,默认为空
apps.py:
	应用信息定义文件,在其中生成了AppConfig,该类用于定义应用名等数据
models.py:
	添加模型层数据类文件
views.py:
	定义URL相应函数
migrations包:
	自动生成,生成迁移文件的
tests.py:
	测试代码文件

基本视图

  • 拿user应用举例
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
# 视图函数Views

# 第一种方式,返回相应的response
def test01(request):
    return HttpResponse('hello Django')

# 第二种方式,渲染模版render,渲染html
# 使用第二种方式,需要在user应用里面创建一个templates(名字不能变)文件夹,然后在文件夹里面创建要使用的html文件
def test02(request):
     return render(request,'index.html')

image.png

  • 然后我们需要,在urls.py文件添加我们的路由规则
from django.contrib import admin
from django.urls import path

import user.views
from user.views import *   # 我们要添加user应用下的函数,需要先导包

urlpatterns = [
    # 自己定义的路由规则,导入相对应的函数,只写函数名,不能加括号
    path('index01/',user.views.test01),
    path('index02/',user.views.test02),
    path('admin/', admin.site.urls),
]

方式一
image.png
方式二
image.png

框架流程图

image.png

路由的基本使用

  • 我们来看刚才写的路由
from django.contrib import admin  
from django.urls import path  
  
import user.views  
from user.views import * # 我们要添加user应用下的函数,需要先导包  
  
urlpatterns = [  
# 自己定义的路由规则,导入相对应的函数,只写函数名,不能加括号  
path('index01/',user.views.test01),  
path('index02/',user.views.test02),  
path('admin/', admin.site.urls),  
]
  • 当有多个应用的时候,假如每个都写一个应用,这时,我们就会发现:我们多个人都需要更改同一个文件。为了避免这样的情况,我们需要使用子路由
  • 而且当路由过多的时候也不好打理,子路由可以使其更加清楚
    创建子路由
  • 需要在应用user下面创建一个文件urls.py(名字不一定是urls,可以改)
from django.urls import path
from user.views import *  # 导入包
# 子路由
# urlpatterns名字固定,不能更改,因为视图函数和子路由在同一个包下面,所以不需要写成user.views.test01
urlpatterns=[
    path('index01/',test01,name='index01'),#name='index01',给路由取一个名字
    path('index02/',test02,name='index02'),
]
  • 然后在urls.py文件下面添加子路由
from django.contrib import admin
from django.urls import path,include # 添加子路由需要使用include函数

import user.views
from user.views import *   # 我们要添加user应用下的函数,需要先导包

urlpatterns = [
    # 自己定义的路由规则,导入相对应的函数,只写函数名,不能加括号
    # path('index01/',user.views.test01),
    # path('index02/',user.views.test02),

    # 添加子路由,一般一个应用对应一个子视图
    # 对于path的一个参数,这里写的是'user/',就表示多了一层路由,就变成了/user/index01/
    # 当然也可以不写,那就还是/index01/,推荐写上并且和包名字一样
    # 注意'user/'斜杆别没了,'user'就需要访问/userindex01/了
    path('user/',include('user.urls')),
    path('admin/', admin.site.urls),
]

image.png

定义模型和简单使用

  • 首先进入应用的models.py,这里以user应用举例
  • 添加模版
from django.db import models

# 和数据库的对应关系
# 模型Model  <==>  表结构
# 类属性     <==>  字段
# 对象实例   <==>  表的一行数据

# 每个模版都必须继承models.Model,因为功能实现都来源他
class UserModel(models.Model):
    name=models.CharField(max_length=30) # 对应 name varchar(30)
    age=models.IntegerField(default=20) # 对应 age int default=18
    sex=models.CharField(max_length=10) # 对应 sex varchar(20)
    is_deleted=models.BooleanField(default=False)

# 表字段
# 用户名称-name
# 年龄-oge
# 性别-sex
# 是否删除-is_delete
  • 下一步进行数据迁移
  • 注意,model表结构一旦改变,就需要重新进行数据迁移
先生成迁移文件:python manage.py makemigrations
再执行迁移:python manage.py migrate

image.png

  • 在应用默认的迁移文件夹migrations,生成迁移了文件001_initial.py

  • 刷新数据库,获得user_usermodel表(名字可以改)

  • 这里默认会生成字段id作为主键
    image.png

  • 双击打开,图形化界面,添加数据
    image.png

  • 进入视图,创建新的视图,这里还创建了模版user.html

from django.shortcuts import render
from user.models import * # 导入所有模型

# 进行从数据库取数据
def test03(request):
    # 模型操作:获取UserModel对应表的所有数据
    users=UserModel.objects.all()
    return render(request,'users.html',{'users':users}) 
    # 传参,要使用字典形式,键名为模版当中使用的名字
  • 使用Django模版语法,这里for+tab键,<ul>无序列表
    image.png
    如果没有效果,可能是pycharm没有设计模版语言,去设计一下
    image.png
  • 最后添加路由规则,我们原来已经使用了子路由,所以只需要在应用里面添加就行了
    image.png

后台管理

  • 创建超级管理员的账号和密码:python manage.py createsuperuser
from django.contrib import admin
from user.models import * # 导入所有模型
# Register your models here.

#后台管理系统的使用:
# 1.在这里注册对应的模型
# 2.需要创建超级管理员的账号和密码:python manage.py createsuperuser
# 3.根路urls.py中添加:path('admin/', admin.site.urls),默认就有
# 4.访问后台管理系统:http://127.0.0.1:8000/admin/
admin.site.register(UserModel)
  • 进入
    image.png
    在模型里添加一个__str__函数
class UserModel(models.Model):
    name=models.CharField(max_length=30) # 对应 name varchar(30)
    age=models.IntegerField(default=20) # 对应 age int default=18
    sex=models.CharField(max_length=10) # 对应 sex varchar(20)
    is_deleted=models.BooleanField(default=False)
    def __str__(self):
        return f'{self.name}-{self.age}'

image.png

  • 进行添加数据,其他的也差不多,点进去进行更改或删除
    image.png
    image.png
  • 29
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django 创建以来,各种各样的开源社区已经构建了很多Web 框架,比如JavaScript 社区创建的Angular.js 、Ember.js 和Backbone.js 之类面向前端的Web 框架,它们是现代Web 开发中的先驱。Django 从哪里入手来适应这些框架呢?我们如何将客户端MVC 框架整合成为当前的Django 基础架构? 轻量级Django这本书讲述如何利用Django 强大的“自支持”功能体系。本书的目标是引导读者跨越认为Django 太繁重而无法进行快速应用开发的误区。从创建世界上最小的Django 应用到构建RESTful API ,本书将引导读者学习如何利用这种流行的Python Web 框架。 写这本书的目的 我们编写本书主要是出于对Django 的热爱。我们的社区是令人惊奇的,它有很多资源可以用来学习Django 和开发应用。尽管我们也喜欢包括官方的Django 文档在内的一些资源,但这仅仅是对Django 强大功能的过于关注,而非它的解耦设计。Django 是一个令人满意的框架,它带有很多用于构建Web 应用的通用程序。在本书中,我们要突出说明如何将这些组件进行分离和间接替换,并从中选出最适合创建应用的一些组件来。同样地,我们想要将Django 项目和应用的典型框架进行分解。我们的目标是使读者不再提出“我怎样用Django 完成我的X 工作”这样的问题,而是提出“Django 能帮我完成X 工作吗?如果不能,社区有可用的工具吗”这样的问题。 另外,我们想要回答的问题是利用大量客户端实时交互,以及与本地可移动应用匹配的组件构建更多应用时,将Django 放在网络的什么地方适用。作为框架,用户对Django 一无所知,这使得一些喜欢Django 的用户无法得到构建这种应用的指导。我们希望本书能够帮助解决这些问题,想看到Django 及其社区日益壮大,并在多年后大家也成为它的一员。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值