使用环境:python3,新建django项目

mysql数据库还是使用test2库。


进入python3环境:

]#cdpy3/django-test1/

新建项目test5:

]#django-adminstartprojecttest5

在test5项目下创建应用bookshop:

]#cdtest5]#pythonmanage.pystartappbookshop

修改settings.py主配置文件:

]#vimtest5/settings.py#中添加应用INSTALLED_APPS=(...'bookshop',)#配置静态文件STATIC_URL='/static/'STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]#配置模板路径TEMPLATES={'DIRS':[os.path.join(BASE_DIR,'templates')],...}#配置使用mysql数据库DATABASES={'default':{'ENGINE':'django.db.backends.mysql','NAME':'test2','USER':'root','PASSWORD':'root','HOST':'192.168.255.70','PORT':'3306',}}

创建静态文件路径:

]#mkdir-pstatic/bookshop

把静态文件,如美女图片girl1.jpg,放到test5/static/bookshop目录下。

配置根url路径:

]#vimtest5/urls.pyurlpatterns=[url(r'^admin/',include(admin.site.urls)),url(r'^',include('bookshop.urls')),]

配置应用url路径:

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

定义视图:

]#vimbookshop/views.pyfromdjango.shortcutsimportrenderdefindex(request):returnrender(request,'bookshop/index.html')

定义html模板:

]#mkdir-ptemplates/bookshop

]#vimtemplates/bookshop/index.html<!DOCTYPEhtml><html><head><title>Title</title></head><body><imgsrc="/static/bookshop/girl1.jpg"></body></html>

此时的设置,在settings.py文件中的静态路径与html中src指定的路径是写死的,如果STATIC_URL改变设置,则页面会打不开。


由于python3中使用连接mysql数据库需要特殊处理:

]#vimtest5/__init__.pyimportpymysqlpymysql.install_as_MySQLdb()

启动django服务:

]#pythonmanage.pyrunserver192.168.255.70:8000

浏览器访问:http://192.168.255.70:8000/

显示:


如果STATIC_URL = 'images',则必须在html模板中的src要做相应修改为:<img src = "/images/bookshop/girl1.jpg" width="600" height="600" /> 两者路径必须保持一致,这个路径是逻辑上的,实际根本没有这个目录,可以达到隐藏路径的效果。


当然,可以使用一种动态的方法,在html模板中不必写死静态路径,从而实现灵活配置:

在html模板中使用static标签:

]#vimtemplates/bookshop/index.html{%loadstaticfromstaticfiles%}<!DOCTYPEhtml><html><head><title>Title</title></head><body><imgsrc="/pic/bookshop/girl1.jpg"width="600"height="600"/><br><imgsrc="{%static'bookshop/girl1.jpg'%}"width="600"height="600"/></body></html>

浏览器访问:http://192.168.255.70:8000/可见效果。

这样,仅修改STATIC_URL ='XXXX',一处逻辑路径,html模板会自动识别逻辑路径,从而完成访问资源。

django中静态文件实现即先查找逻辑路径,再查找物理存放路径。