1. 首先建立一个pydjango的项目。
初始的项目包括根目录的manage.py,以及一个以project name命名的文件夹(包含settings.py, urls.py,和一个wsgi.py)
注意:如果这个project包含多个app(其实就是包,每个包中应该是单独的文件夹),那么应该建立多个包,然后在每个包创建自己的urls设置,以及views和models,然后再上层目录建立一个总的urls转发。
2. 修改settings.py 这个是最重要的东东。一定要记住里边的数据的目录是相对于这个settings的文件的
数据库连接
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'blogdemo', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': '111111', # Not used with sqlite3.
'HOST': '127.0.0.1', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '3306', # Set to empty string for default. Not used with sqlite3.
}
}
时区和语言
TIME_ZONE='Asia/Beijing'
LANGUAGE_CODE='zh-cn'
模板目录
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.
os.path.join(os.path.dirname(__file__), 'template').replace('\\','/'),
'.',
)
支持的app 注意包的路径,我们现在只是在project的根目录下建立了一个blogdemo的app
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.admindocs',
#上边的都是默认的
'blogdemo',
)
3. 创建app : blogdemo
3.1 建立一个models.py, 里边的数据是和db关联的
#!usr/bin/env python
#coding: utf-8
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=32)
def __unicode__(self):
return self.name
#class Amdin是用来声明标记这个类拥有一个管理界面
#在Admin之下你可以配置许多选项 目前我们采用默认值,所以我们使用pass来表示Admin类是空的. 可以补全这个类为权限细分
class Admin:
pass
class Article(models.Model):
title = models.CharField(max_length=64)
published_at = models.DateTimeField('date published')
content = models.TextField()
category = models.ForeignKey(Category)
def __unicode__(self):
return self.title
class Admin:
pass
建立好这个model后(当然任何时候都可以执行下述的命令来创建数据库)
python manage.py validate来验证是不是正确的models路径配置
python manage.py sqlall blogdemo 来展示如何创建sql数据库脚本
python manage.py syncdb 来创建数据库表
python manage.py dbshell 进入db的shell
python manage.py createsuperuser 创建超级用户
3.2 修改urls:
from blogdemo.models import Article
from django.conf.urls import patterns, include
from django.contrib import admin
#这一行是为了给管理员加具体模块操作的权限的,如果没有,那么管理员就无法对数据库中的model进行直接操作
admin.autodiscover()
urlpatterns = patterns('',
(r'^$', 'blogdemo.views.listArticle'),
(r'^admin/', include(admin.site.urls)),
)
urls准备好后,管理员界面其实已经可以用了。但是具体哪个model会被编辑,需要再admin.py中注册
在app下建立admin.py文件 (settings中的'django.contrib.admin'是对应的管理admin的app,如果没添加到install_app中,那么要加上)
from django.contrib import admin
from models import Category, Article
admin.site.register(Category)
admin.site.register(Article)
3.3 添加views.py与数据库和模板交互。这里只给了个获取全部article的
from blogdemo.models import Article
from django.shortcuts import render
def listArticle(request):
lists=Article.objects.all()
return render(request,'article_list.html', {'object_list': lists})
3.4 建立模板 在已经创建的template下(看settings中的设置路径)
article_list.html:
{% if object_list %}
{% for article in object_list %}
<div class="article">
<div class="title"><a href="/blog/{{ article.id }}">{{ article.title }}</a></div>
</div>
{% endfor %}
{% else %}
<p>對不起沒有文章喔!</p>
{% endif %}
ok. 发布服务,查看http://localhost:8000/admin和http://localhost:8000/