Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >django模板之的html模板中调用对

django模板之的html模板中调用对

作者头像
py3study
发布于 2020-01-08 06:16:39
发布于 2020-01-08 06:16:39
4.6K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

环境:依赖最初test2数据库

           python3版本

           多python版本环境

进入,python3虚拟环境,新建项目test4:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
]# cd py3/django-test1/
]# django-admin startproject test4

创建应用bookshop:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
]# cd test4
]# python manage.py startapp bookshop

修改settings.py主配置文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
]# vim test4/settings.py
...
#数据库为mysql,使用原来的test2数据库名称:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test2',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '192.168.255.70',
        'PORT': '3306',
    }
}
#添加应用:
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'bookshop',
)
#添加模板查找路径:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        ...
]
...

在项目名称目录下,添加模板目录并在其下添加应用的模板目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
]# mkdir -p templates/bookshop

在主url路由配置文件中,添加查找应用url的路由:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
]# vim test4/settings.py 
...
urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^',include('bookshop.urls',namespace='bookshop')),
]

在应用目录下创建urls.py文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
]# vim bookshop/urls.py
from django.conf.urls import url
from .  import views

urlpatterns = [
    url(r'\^$',views.index,name='index'),
]

以上基本配置完成,下面演示在模板中调用对象的方法:

定义模型类:

为了不用迁移,定义模型类要和test2数据库结构一样;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
]# vim bookshop/models.py
from django.db import models

class BookInfo(models.Model):
    btitle = models.CharField(max_length=20)
    bpub_date = models.DateTimeField(db_column='pub_date') #定义字段名称为pub_date,默认字段名称就是类属性,即默认字段名称为bpub_date
    bread = models.IntegerField()
    bcommet = models.IntegerField()
    isDelete = models.BooleanField()

    #定义表名
    class Meta():
        db_table = 'bookinfo'
    #如果不写上面2行,表名默认为项目名称.类名称,即bookshop.bookinfo

class HeroInfo(models.Model):
    hname = models.CharField(max_length=10)
    hgender = models.BooleanField()
    hcontent = models.CharField(max_length=1000)
    isDelete = models.BooleanField()
    book = models.ForeignKey('BookInfo') #定义外键,此处引号是否可省略,BookInfo先定义就可省略引号,如果后定义则需要使用引号,使用引号绝对没错;在表中字段自动变为book_id
    
    def showname(self):
        return self.hname

定义视图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
]# vim bookshop/views.py
from django.shortcuts import render
from .models import *
#from models import * #在python2写法


def index(request): #必须接收一个参数
    hero = HeroInfo.objects.get(pk=1) #查询主键(pk)=1的条目
    context = {'hero':hero} #必须为字典格式
    return render(request,'bookshop/index.html',context)

定义index.html模板文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
]# vim templates/bookshop/index.html
<!DOCTYPE html>
<html>
<head>
    <title>Title</title>
</head>
<body>
{{ hero.hname }}<br><!--调用对象的属性-->
{{hero.showname}}<!--调用对象的方法,但不能给方法传递参数-->

<!--注释
#点号解析顺序:
#1.先把hero作为字典,hname为键查找
#2.再把hero作为对象,hname为属性或方法查找
#3.最后把hero作为列表,hname为索引查找
-->

</body>
</html>

启动web服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
]# python manage.py runserver 192.168.255.70:8000
报错:Error loading MySQLdb module: No module named 'MySQLdb'

解决:由于在python3版本上使用pymysql库,没有MySQLdb库,则需要配置;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
]# vim test4/__init__.py
import pymysql
pymysql.install_as_MySQLdb()

再次启动web服务成功;浏览器访问:http://192.168.255.70:8000/

完成验收在html模板文件中调用对象的属性和对象的方法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python实例
原创 2017年06月27日 16:46:04 标签:django /mysql 721
py3study
2020/01/07
1.2K0
python实例
Django—模型
ORM,全拼Object-Relation Mapping,中文意为对象-关系映射,是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射ORM系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。O/R中字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。几乎所有的程序里面,都存在对象和关系数据库。在业务逻辑层和用户界面层中,我们是面向对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。目前流行的ORM产品如Java的Hibernate,.Net的EntityFormerWork等。
py3study
2020/01/16
6.3K0
Django—模型
Django设计模型1.2
设计介绍 本示例完成“图书-英雄”信息的维护,需要存储两种数据:图书、英雄 图书表结构设计: 表名:BookInfo 图书名称:btitle 图书发布时间:bpub_date 英雄表结构设计: 表名:HeroInfo 英雄姓名:hname 英雄性别:hgender 英雄简介:hcontent 所属图书:hbook 图书-英雄的关系为一对多 数据库配置 在settings.py文件中,通过DATABASES项进行数据库设置 django支持的数据库包括:sqlite、mysql等主流数据库 D
Lansonli
2021/10/09
4650
Python全栈开发之Django基础
M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作
py3study
2020/01/06
3.8K0
django_mysql_配置
1. 创建一个新的应用,为booktest,在models.py 文件中定义模型类,然后去setting注册应用
py3study
2020/01/16
1.6K0
Django—入门
举个简单的例子,对于一个公司来说,公司中有各个职能部门,每个部门各司其职,通过部门之间的配合来完成工作,这些部门就形成了一个公司的组织架构。从某种意义上来说,公司就是一种框架。那么对应到软件设计上来说,软件框架是由其中的各个模块组成的,每个模块负责特定的功能,模块与模块之间相互协作来完成软件开发。
py3study
2020/01/16
1.9K0
Django—入门
Django 定义模型2.1
定义模型 在模型中定义属性,会生成表中的字段 django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后,则django不会再生成默认的主键列 属性命名限制 不能是python的保留关键字 由于django的查询方式,不允许使用连续的下划线 定义属性 定义属性时,需要字段类型 字段类型被定义在django.db.mo
Lansonli
2021/10/09
1.2K0
web开发框架之Django基础
# 基本查询 print(BookInfo.objects.all()) print(BookInfo.objects.get(btitle='雪山飞狐').id) print(BookInfo.objects.get(id=3)) print(BookInfo.objects.get(pk=3)) # 将ID=3的排除,显示其他的 print(BookInfo.objects.exclude(id=3)) print(111111111) try:   print(BookInfo.objects.get(id=12)) # except Exception as e:
py3study
2020/01/17
6.2K0
DRF框架(五)——APIview实现增删改查
目录 用APIview实现的功能 路由 model 序列化文件 view视图 查询全部数据 新增数据 根据pk查询一条数据 根据pk进行修改一条数据 删除一条数据 用APIview实现的功能 """ GET /books/ 提供所有记录 POST /books/ 新增一条记录 GET /books/<pk>/ 提供指定id的记录 PUT /books/<pk>/ 修改指定id的记录 DELETE /books/<pk>/ 删
一写代码就开心
2021/03/02
2.2K0
Django框架学习(三)
客户端访问/use_template/,服务器调用对应的视图函数,进行模板的渲染,给模板文件传递变量,将模板文件中的变量进行替换,获取替换之后的html内容,将替换之后的html内容返回给客户端,返回渲染之后的完整的html页面,客户端只是显示。
小闫同学啊
2019/07/18
1.9K0
Django&DRF重点内容大盘点
本文只是将学习过程中需要深刻记忆,在工作中常用的一些命令或者知识点进行一个罗列并阐释,不会全面的将所有内容进行讲解。大家可以在了解了Django框架和DRF框架之后再来看这篇文章。否则会有点不知所云。
小闫同学啊
2019/07/18
6K0
Django 上传图片和Admin站点5.2
上传图片 当Django在处理文件上传的时候,文件数据被保存在request.FILES FILES中的每个键为<input type="file" name="" />中的name 注意:FILES只有在请求的方法为POST 且提交的<form>带有enctype="multipart/form-data" 的情况下才会包含数据。否则,FILES 将为一个空的类似于字典的对象 使用模型处理上传文件:将属性定义成models.ImageField类型 pic=models.ImageField(upload
Lansonli
2021/10/09
5340
序列化使用
4)如果要被序列化的是包含多条数据的查询集QuerySet,可以通过添加many=True参数补充说明
小闫同学啊
2019/07/18
8820
四、其它(一)ModelAdmin对象InlineModelAdmin对象重写admin模板Paginator对象Page对象示例
一、管理静态文件 项目中的CSS、图片、js都是静态文件 配置静态文件 在settings 文件中定义静态内容 STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ] 在项目根目录下创建static目录,再创建当前应用名称的目录 mysite/static/myapp/ 在模板中可以使用硬编码 /static/my_app/myexample.jpg 在模板中可以使用static编码 { % l
酱紫安
2018/06/13
4.5K0
django总结四:django---
3)安装pymysql pip install pymysql PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
py3study
2020/01/02
6920
Django教程(一)- Django视图与网址1.简介2.环境搭建3.安装pycharm4.Ubuntu下 正确安装VMware Tools5.Django主要模块6.Django基本命令7. Dj
Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站!
Python攻城狮
2018/08/23
1.4K0
Django教程(一)- Django视图与网址1.简介2.环境搭建3.安装pycharm4.Ubuntu下 正确安装VMware Tools5.Django主要模块6.Django基本命令7. Dj
DjangoRESTframework(补充)
版权声明:Copyright © https://blog.csdn.net/zzw19951261/article/details/80995504
zhengzongwei
2019/07/31
2.3K0
Django流程_菜鸟裹裹收费标准
打开cmd,输入:pip install Django==1.11.4,然后回车
全栈程序员站长
2022/10/05
1.4K0
Django流程_菜鸟裹裹收费标准
Django入门教程
python3详细安装教程_超级小的大西瓜的博客-CSDN博客_python3安装
超级小的大杯柠檬水
2023/05/06
3900
Django教程 —— 初步完善图书管理系统
我们写项目写东西的时候都要养成良好的习惯,不要一来就上手写代码,我们先要进行初步分析和设计,让大脑有整体的概念,需要用到什么技术实现什么效果。这个习惯也不能学的太死,我们要活学活用,学会变通。有时候只是简单的学习一下,或者简单的实现一个小功能。大脑已经可以大概掌握,就无须设计与分析。
忆想不到的晖
2020/11/06
1K0
相关推荐
python实例
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验