manager.py中
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cwBlog.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
加载settings配置文件
配置文件中初始化数据库,安装app匹配,模版路径。url根目录。中间件匹配。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'cwBlog', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': 'root',
'PASSWORD': '258841679',
'HOST': '127.0.0.1', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '3306', # Set to empty string for default.
}
}
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
"cwBlog/html/template/"
)
ROOT_URLCONF = 'cwBlog.urls'
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'cwBlog',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
)
当1个http请求产生。
通过urls.py解析路径。并投递到对应的view视图函数中。
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'cwBlog.views.home', name='home'),
# url(r'^cwBlog/', include('cwBlog.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
url(r'^$', blog),
url(r'^blog/$', blog),
)
在视图函数中,加载数据模型,和模版。得到需要显示的数据以后,重绘模版。返回响应.
from django.template import loader, Context
from django.http import HttpResponse
from cwBlog.models import BlogPost
def blog(request):
posts = BlogPost.objects.all()
t = loader.get_template('blog.html')
c = Context({'posts' : posts})
return HttpResponse(t.render(c))
具体解析模版
其中post.timestamp | date:""
|表示后面接上过滤器
date格式化
{% extends "base.html" %}
{% block content %}
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp | date:"1, F jS" }}</p>
<p>{{ post.body }}</p>
{% endfor %}
{% endblock %}