环境:依赖最初test2数据库

python3版本

多python版本环境


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

]#cdpy3/django-test1/]#django-adminstartprojecttest4

创建应用bookshop:

]#cdtest4]#pythonmanage.pystartappbookshop

修改settings.py主配置文件:

]#vimtest4/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-ptemplates/bookshop

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

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

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

]#vimbookshop/urls.pyfromdjango.conf.urlsimporturlfrom.importviewsurlpatterns=[url(r'\^$',views.index,name='index'),]

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

定义模型类:

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

]#vimbookshop/models.pyfromdjango.dbimportmodelsclassBookInfo(models.Model):btitle=models.CharField(max_length=20)bpub_date=models.DateTimeField(db_column='pub_date')#定义字段名称为pub_date,默认字段名称就是类属性,即默认字段名称为bpub_datebread=models.IntegerField()bcommet=models.IntegerField()isDelete=models.BooleanField()#定义表名classMeta():db_table='bookinfo'#如果不写上面2行,表名默认为项目名称.类名称,即bookshop.bookinfoclassHeroInfo(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_iddefshowname(self):returnself.hname

定义视图:

]#vimbookshop/views.pyfromdjango.shortcutsimportrenderfrom.modelsimport*#frommodelsimport*#在python2写法defindex(request):#必须接收一个参数hero=HeroInfo.objects.get(pk=1)#查询主键(pk)=1的条目context={'hero':hero}#必须为字典格式returnrender(request,'bookshop/index.html',context)

定义index.html模板文件:

]#vimtemplates/bookshop/index.html<!DOCTYPEhtml><html><head><title>Title</title></head><body>{{hero.hname}}<br><!--调用对象的属性-->{{hero.showname}}<!--调用对象的方法,但不能给方法传递参数--><!--注释#点号解析顺序:#1.先把hero作为字典,hname为键查找#2.再把hero作为对象,hname为属性或方法查找#3.最后把hero作为列表,hname为索引查找--></body></html>

启动web服务:

]#pythonmanage.pyrunserver192.168.255.70:8000报错:ErrorloadingMySQLdbmodule:Nomodulenamed'MySQLdb'

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


]#vimtest4/__init__.pyimportpymysqlpymysql.install_as_MySQLdb()

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

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