django小技巧之html模板中调用对象属性或对象的方法


Posted in Python onNovember 30, 2018

环境:依赖最初test2数据库

           python3版本
           多python版本环境

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

]# cd py3/django-test1/
]# django-admin startproject test4

创建应用bookshop:

]# cd test4
]# python manage.py startapp bookshop

修改settings.py主配置文件:

]# 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')],
        ...
]
...

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

]# mkdir -p templates/bookshop

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

]# vim test4/settings.py
...
urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^',include('bookshop.urls',namespace='bookshop')),
]

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

]# vim bookshop/urls.py
from django.conf.urls import url
from .  import views
urlpatterns = [
    url(r'\^$',views.index,name='index'),
]

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

定义模型类:

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

]# 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

定义视图:

]# 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模板文件:

]# 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服务:

]# python manage.py runserver 192.168.255.70:8000

报错:Error loading MySQLdb module: No module named 'MySQLdb'
解决:由于在python3版本上使用pymysql库,没有MySQLdb库,则需要配置;

]# vim test4/__init__.py
import pymysql
pymysql.install_as_MySQLdb()

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

django小技巧之html模板中调用对象属性或对象的方法

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

Python 相关文章推荐
Python Socket编程入门教程
Jul 11 Python
全面了解Python环境配置及项目建立
Jun 30 Python
Python内置函数—vars的具体使用方法
Dec 04 Python
网红编程语言Python将纳入高考你怎么看?
Jun 07 Python
Python判断变量名是否合法的方法示例
Jan 28 Python
python3使用matplotlib绘制散点图
Mar 19 Python
Python列表删除元素del、pop()和remove()的区别小结
Sep 11 Python
python 爬取马蜂窝景点翻页文字评论的实现
Jan 20 Python
Python-jenkins模块之folder相关操作介绍
May 12 Python
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
Jun 22 Python
PyCharm鼠标右键不显示Run unittest的解决方法
Nov 30 #Python
python实现简单名片管理系统
Nov 30 #Python
python3学生名片管理v2.0版
Nov 29 #Python
python实现名片管理系统
Nov 29 #Python
Python中利用aiohttp制作异步爬虫及简单应用
Nov 29 #Python
Python中logging.NullHandler 的使用教程
Nov 29 #Python
Mac下Anaconda的安装和使用教程
Nov 29 #Python
You might like
基于simple_html_dom的使用小结
2013/07/01 PHP
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
PHP中执行cmd命令的方法
2014/10/11 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
PHP实现执行外部程序的方法详解
2017/08/17 PHP
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
js parsefloat parseint 转换函数
2010/01/21 Javascript
js常用数组操作方法简明总结
2014/06/20 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
vue.js实现双击放大预览功能
2020/06/23 Javascript
JS如何生成动态列表
2020/09/22 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
Python 随机生成中文验证码的实例代码
2013/03/20 Python
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
Python遍历指定文件及文件夹的方法
2015/05/09 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
详解使用django-mama-cas快速搭建CAS服务的实现
2019/10/30 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
团购业务员岗位职责
2014/03/15 职场文书
如何写好自荐信
2014/04/07 职场文书
公司年底活动方案
2014/08/17 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
2014城乡环境综合治理工作总结
2014/12/19 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL