#### **创建项目**
```
django-admin startproject BBS
```
#### **数据库配置**
在settings.py文件中 将app01应用加入到installed_apps中,修改DATABASES项
~~~
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'bbs',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '3306'
}
}
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
~~~
#### **创建应用**
~~~
python manage.py startapp app01
~~~
#### **定义模型类**
在app01/models.py文件中
~~~
# -*-coding:utf-8
from django.db import models
from django.contrib.auth.models import User
class BBS(models.Model):
"""
帖子表
"""
title = models.CharField(max_length=64)
summary = models.CharField(max_length=256,blank=True,null=True)
content = models.TextField()
auth = models.ForeignKey('BBS_user')
view_count = models.IntegerField()
ranking = models.IntegerField()
created_at = models.DateTimeField()
updated_at = models.DateTimeField()
def __unicode__(self):
return self.title
class Categroy(models.Model):
"""
分类表
"""
name = models.CharField(max_length=32,unique=True)
administrator = models.ForeignKey('BBS_user')
class BBS_user(models.Model):
"""
论坛用户表
"""
user = models.OneToOneField(User)
signature = models.CharField(max_length=128,default='This guy is too lazy to levave anything here')
photo = models.ImageField(upload_to='upload_images/',default="upload_images/user_1.jpg",)
def __unicode__(self):
return self.user.username
~~~
#### **生成数据表**
```
python manage.py syncdb
```
在app01/admin.py 注册数据表 不注册后台不显示
~~~
from django.contrib import admin
from app01 import models
# Register your models here.
admin.site.register(models.BBS)
admin.site.register(models.Categroy)
admin.site.register(models.BBS_user)
~~~
#### **生成迁移文件:根据模型类生成sql语句**
```
python manage.py makemigrations app01
```
#### **执行迁移:执行sql语句生成数据表**
~~~
python manage.py migrate
~~~
#### **创建一个管理员账户**
```
python manage.py createsuperuser
```
#### **运行项目**
```
python manage.py runserver
```
#### **django admin后台列表显示**
在app01/admin.py下
~~~
# -*-coding:utf-8
from django.contrib import admin
from app01 import models
# Register your models here.
class BBS_admin(admin.ModelAdmin):
#列表显示
list_display = ('title','summary','view_count','auth','signature')
#过滤
list_filter = ('created_at',)
#搜索查询
search_fields = ('title','auth__user__username')
#展示关联表中另一个字段
def signature(self,obj):
return obj.auth.signature
#给signature起个别名
signature.short_description = '签名'
class BBS_user_admin(admin.ModelAdmin):
list_display = ('signature','id')
admin.site.register(models.BBS,BBS_admin)
admin.site.register(models.Categroy)
admin.site.register(models.BBS_user,BBS_user_admin)
~~~
#### **在项目目录下创建static和templates目录**
* static目录存放公共的css、images、js文件
>[danger]在setting的配置文件中添加
STATIC_URL = '/abc/' #静态目录的别名
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'),
)
* templates 存放视图文件
>[danger]在setting的配置文件中
TEMPLATES = [{
'DIRS': [os.path.join(BASE_DIR,'templates')],
}]
在templates目录下创建一个index.html
在app01目录下的views.py中
~~~
from django.shortcuts import render,render_to_response
from django.http import HttpResponse
def index(response):
return render_to_response('index.html')
~~~
#### **配置路由url**
1.在根目录下的urls.py
~~~
from django.conf.urls import include, url
from django.contrib import admin
import app01.urls
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'',include(app01.urls)),
]
~~~
2.在项目app01下的urls.py
~~~
from django.conf.urls import include, url
import views
urlpatterns = [
url(r'^$',views.index),
]
~~~
3.在项目app01下的views.py
~~~
from django.shortcuts import render,render_to_response
from django.http import HttpResponse,request
# Create your views here.
def index(reuqest):
return HttpResponse("
test
")~~~
4.在views.py的方法中从数据库中查询数据
~~~
from django.shortcuts import render,render_to_response
from django.http import HttpResponse,request
from app01 import models
# Create your views here.
def index(reuqest):
bbs = models.Bbs.objects.all();
return render_to_response('index.html',{'o':bbs})
~~~
5.在模板的index.html中输出
~~~
{% for bs in o %}
{{ bs.title }}
{{ bs.summary }}
{% endfor %}
~~~