Django中静态文件配置
django构建网站的基本操作,这里就不说了。这里只说在我使用Django制作网站的过程中遇到过的一些小事情。
为了使Django能够识别CSS,JS和图片等静态文件,需要在项目根目录下建立static文件夹,并且在settings.py文件中设置如下:
1 STATIC_URL = '/static/'
2 STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static').replace('\\', '/')
3 STATICFILES_DIRS = (
4 os.path.join(os.path.dirname(__file__), '../static').replace('\\', '/'),
5 )并且在utls.py文件后面添加
1 urlpatterns += static(STATIC_URL, document_root = STATIC_ROOT)经过这样设置以后,就可以在HTML文件中引用了
1 <link rel = "stylesheet" href="/static/css/bootstrap.min.css">
2 <script type="text/javascript" src="/static/js/jquery-2.1.1.js"></script>数据库相关操作
数据库一般使用的是mysql,在本地安装mysql的服务器和客户端后,需要安装myql的python包python-mysql,接着需要在settings.py中对数据库进行配置
1 DATABASES = {
2 'default': {
3 'ENGINE': 'django.db.backends.mysql',
4 'NAME': 'djangodb',
5 'USER': 'root',
6 'PASSWORD': 'root',
7 'HOST': '127.0.0.1',
8 'PORT': '3306',
9 }
10 }Django模板使用
- 在settings.py中配置模板路径
1 TEMPLATE_DEBUG = True
2 TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), 'templates').replace('\\', '/'),)就可以在项目主目录的templates下创建模版了
- 模板文件编写
模板本质上是html文件,就是要要成先的网页页面,因此html相应的标签都要有,不同的是模板通过添加变量和模版标签来充实html的内容
*变量用包围,html中会显示该变量的值
*块标签用{%%}包围,html会显示该块标签中定义的内容
一个简单的例子说明一下,html页面是怎么呈现的: 在template目录下定义index.html页面
<html>
<head><title>模板实例</title></head>
<body>
<p>Dear ,</p>
<p>Here are the items you've ordered:</p>
<ul>
{% for item in item_list %}
<li>{{ item }}</li>
{% endfor %}
</ul>
</body>
</html>首先,在urls.py中定义url规则,例如网站默认首页显示index.html
1 urlpatterns = patterns('',
2 # Examples:
3 # url(r'^$', 'DeviceWeb.views.home', name='home'),
4 # url(r'^blog/', include('blog.urls')),
5
6 url(r'^$', index),
7 )意思是,输入网址会调用views.py中的index函数。 接着在views.py中定义index函数:
1 def index(request):
2 name='Jack'
3 items=['aaa', 'bbb', 'ccc']
4 return render_to_response('index.html', {'person_name': name, 'item':items, })最重要的一句是return,返回index.html页面,并且将后面的变量传递到index.html中,变量是json结构,可以传递多个。这样运行网站,输入http://localhost:8000就可以看到index.html并且显示了相应的变量信息。
Django后台管理
- 配置settings.py
1 INSTALLED_APPS = (
2 'django.contrib.admin', ###添加这句
3 'django.contrib.auth',
4 'django.contrib.contenttypes',
5 'django.contrib.sessions',
6 'django.contrib.messages',
7 'django.contrib.staticfiles',
8 'DevWeb', #自己的项目
9 )- 配置urls.py
1 urlpatterns = patterns('',
2 # Examples:
3 # url(r'^$', 'DeviceWeb.views.home', name='home'),
4 # url(r'^blog/', include('blog.urls')),
5
6 url(r'^admin/', include(admin.site.urls)),
7 url(r'^$', index),
8 )- 配置admin.py
对在models.py中创建的模型,在admin.py下进行注册,例如: models.py
1 class CompanyNews(models.Model):
2 title = models.CharField(max_length=30)
3 public_time = models.DateTimeField('create date')
4 content = models.TextField(default='')
5
6 def __unicode__(self):
7 return self.title
8
9 class CompanyNewsAdmin(admin.ModelAdmin):
10 passadmin.py
1 from django.contrib import admin
2 from DevWeb.models import CompanyNews, CompanyNewsAdmin
3
4 admin.site.register(CompanyNews, CompanyNewsAdmin)这样运行项目,打开http://localhost:8000/admin就可以看到管理界面了,当然要输入用户名和密码
Django中图片上传操作
后台的图片上传操作django默认是上传到MEDIA_ROOT目录下面的,因此要在settings.py中配置. 由于static下的东西一般是配置了可以在前台显示的,所以一般上传路径也在static下 settings.py
1 MEDIA_ROOT = 'static/media/'
2 MEDIA_URL = '/static/media/'model.py中需要进行如下设置: model.py
1 class StaticImage(models.Model):
2 image = models.ImageField(default='', blank=True, upload_to='.')
3
4 def __unicode__(self):
5 return "/static/media/" + str(self.image)
6
7 class Meta:
8 verbose_name = '图片文件' ##用来定义在后台显示该类的名称
9 verbose_name_plural = '图片文件'则在后台,StaticImage的image域可以用来上传图片