Django基础(2)--Django的基础操作

Django简介

Django是一个基于python的web框架,其功能丰富强大,主要目的是简便、快速的开发数据库驱动的网站,在没有独特的定制化需求时可以方便的使用Django自带的模块进行网站的设计。

Django项目的创建与服务器运行

Django项目的创建

source activate  # 进入虚拟环境
pip install django  # 安装Django,最新版本为2.2
django-admin startproject 项目名  # 创建项目
python manage.py startapp 应用名  # 在项目中创建应用
python manage.py runserver  # 运行Django自带的web服务器

最初创建的项目结构
上图为新创建的Django项目目录结构:
manage.py为可执行文件;
test1(与项目名同名)是一个python文件包;
setting.py为该项目的配置文件;
urls.py为url路由配置(即输入的网址与要进行的操作的对应关系);
wsgi.py是web服务器与Django框架交互的接口。

Django应用的创建

应用目录下的文件
在Django项目中,若想要实现自定义的功能,必须在项目中添加自定义的应用,上图为创建应用后对应文件夹下的目录:
admin.py用于网站后台管理;
tests.py用于测试;
models.py即模型,负责与数据库交互;
views.py负责接收请求,与M和T交互,返回应答;
migrations用于存放迁移文件,迁移文件用于生成表。

要建立应用与项目之间的联系,需要在settings.py中对应用进行注册,修改INSTALLED_APPS元组,将新建立的应用名使用字符串形式添加。

Django服务器运行

当web服务器运行后,在浏览器中输入127.0.0.1:8000(服务器默认的IP和端口)即可开启Django网站,此时只有欢迎信息。

Django的基础操作

Django的模型类设计

即定义数据库中的表,使用django开发应用时无需直接操作数据库,django内置了ORM框架(ORM:以元类的方式对SQL语句进行封装,将表与类对应起来,以实例作为表的一行,大大节约了用户创建表和操作表的时间,关于ORM在python元类中会详细描述),其使用的数据库信息在项目目录下setting.py中存储,默认为sqlite,可修改为mysql等关系型数据库,修改方法及注意事项后详。

在应用下的models.py文件中进行模型类的设计,例如:

class HeroInfo(models.Model):
	hname = models.CharField(max_length=20)
	hgender = models.BooleanField(default=False)
	hcomment = models.CharField(max_length=128)
	hbook = models.ForeignKey('BookInfo', on_delete=models.CASCADE)

定义的模型类即数据库中的表,其自动定义主键’id’(自动增长,不为空),定义外键字段fieldname = models.ForeignKey(‘链接表名’, on_delete=models.CASCADE) on_delete参数意为当外键对应关联表主键数据被删除后的操作,且其在数据库中生成的外键字段名为fieldname_id(即外键名_对应表的主键名)。
注意在迁移之前必须先在settings.py文件中对创建的应用进行注册。

python manage.py makemigrations  # 生成迁移文件
python manage.py migrate  # 执行迁移文件

然后会在数据库中生成表应用名_表名(小写)。

Django的模型类操作

模型类的操作一般在views函数中执行,也可以在manage.py自带的shell中执行,如下为一些简单操作:

python manage.py shell  # 进入shell
from app.models import Test  # 其中app为应用名,Test为表名

①添加与修改,Test是模型类,支持python中类的所有用法,因此可以对类的实例添加实例属性,只有修改了对应字段名并进行.save()才会修改数据库中的数据;

b = Test()
b.fieldname='xxx'
b.save()

②查询,不能直接通过添加时建立的实例进行查询;

b2 = Test.objects.get(查询条件)/.filter()

③删除;

b2.delete()

④对外键进行添加时,即h2.外键名这个实例属性对应的是其对应主键的表的对应行/实例,而h2.外键名_主键名对应的是外键的值,使用①/②中实例均可;

h2.外键名 = b实例

⑤返回某个表中所有行对象组成的列表。

Test.objects.all()

Django提供的后台管理

①管理界面与时区本地化,更改项目中settings.py文件;

LANGUAGE_CODE = 'zh-hans' 
TIME_ZONE = 'Asia/Shanghai'

②创建管理员账户,

python manage.py createsuperuser

然后通过127.0.0.1:8000/admin界面登录;
③注册模型类,在admin.py中注册模型类,将定义在models.py的模型类导入,admin.site.register(类名, [自定义模型管理类名])注册,此时网站上表名下默认显示的是str(b)即实例的字符串值,可通过在models.py中的模型类中重写__str__实例方法设置显示值,也可在admin.py下自定义模型管理类,

class BookInfoAdmin(admin.ModelAdmin): 
	list_display = ['id', 'f2']

其中一般将模型管理类名与要管理的类名对应,list_display列表下是要显示的字段名;
④在后台管理页面中可以增删改查。

Django提供的URL与VIEW管理

①在项目下的urls.py文件urlpatterns列表中查找匹配的URL,django2.x中使用django.urls模块中的path和re_path方法取代了url方法,path(‘url/’, 方法, name=xxx)其中需要添加最后的’/’(re_path后则不必要,re_path方法中可以使用正则,但注意\的转义),方法参数中可以是其他项目的urls文件如include(‘booktest.urls’),name属性用于调用url(后续需要的url反向解析),注意在urls.py下匹配的字符会被丢弃(若第一次全部匹配,则后续全为’'容易产生匹配混乱),继续进入下一个匹配阶段(即include方法中的urls文件);
②取①中匹配后的剩余的url到应用(项目名/应用名)下的urls.py文件urlpatterns列表中查找匹配的URL;
③在项目下查找到可以完全匹配的path方法后,到项目下的views.py文件中查找对应函数,并通过特殊手段返回(有render/HttpResponse等5种方法,后详),注意views中的方法必须有一个request参数,即对应了输入的url,在网页中显示信息。(Django会自动的将re_path的正则中的分组传入后面的视图函数)

Django提供的模板调用

①在settings.py文件中更改模板路径,注意使用其中提供的BASE_DIR(项目目录的绝对路径),在项目目录下新建templates目录,并在其下分别建立应用的目录及html模板;
②在应用下的views.py中定义函数(调用模板,传递参数),其原理如图所示(其中新版本有所更改),django封装了render方法render(request, ‘url’, {})其中{}为一个参数字典;
模板渲染原理
③在模板中使用传入的参数,在html文件中{{ name }}其中name为参数字典中的键的字符串’name’,会将其值显示在页面上,列表/生成器等也可(即print()值);在模板中可以直接调用for循环(empty下的是当列表为空时显示的信息)等。
Django模板中的for循环
注:Django2.2文档已有官方中文翻译,需多参考[https://docs.djangoproject.com/zh-hans/2.2/]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值