diango学习笔记
系统:ubuntu14.0.4LTS
环境:python2.7 django1.7
1、通过sudo apt-get install python-django安装django模块
2、在/usr/bin目录中可以找到django-admin文件并复制
3、选择一个项目目录(如:django),并把django-admin文件粘贴到此目录下
4、在终端cd进入这个目录,输入:django-admin startproject mysite(项目名,以mysite为例)
5、在目录中找到manage.py文件放到mysite文件夹中并cd进入,终端输入:python manage.py startapp blog(应用名,以blog为例)
6、在mysite中的setting.py文件应用元组中加入'blog',(原教程这里是加入mysite.blog,但是在django 1.4以后这里只用加入app的名称即可,同理,下面的引用都是blog即可)
7、设计blog中的model,注释改为:
class BlogPost (models .Model ) :
title = models.CharField(max_length=150)
body = models. TextField()
timestamp = models .DateTimeField( )
8、数据库默认为sqlite3不必修改。若用mysql数据库设置如下:
DATABASE-ENGINE = "mysql"
DATABASE-NAME = "d j angodb"
DATABASE-HOST = "localhost"
DATABASE-USER = "paul"
DATABASE-PASSWORD = "pony" # secret1
9、创建表,在终端输入:python manage.py syncdb,此时在urls.py中会生成相关的url,去掉注释即可。还会要求输入管理员信息,填好记好。
10、在终端输入:python manage.py runserver以此开启服务器。终端中会显示网址和端口,在浏览器中输入,显示it works就是搭建成功。
11、这时输入http://localhost:8000/admin,此时网页界面就进入后台管理了。为了让blog app显示,进入mysite/blog/models.py修改成以下:
from django.db import models
from django.contrib import admin
class BlogPost(models.Model) :
title = models.CharField(max_length=150)
body = models.TextField()
timestamp = models.DateTimeField()
admin.site.register(BlogPost)
再刷新网页blog应用出现了。
12、但是新添加的blog会变成难看的blogproject。下面来改名字。在mysite/blog/models.py中添加一个BlogPostAdmin类,如下:
from django.db import models
from django.contrib import admin
class BlogPost(models.Model) :
title = models.CharField(max_length=150)
body = models.TextField()
timestamp = models.DateTimeField()
class BlogPostAdmin(admin.ModelAdmin):
list_display = ('title','timestamp')
admin.site.register(BlogPost,BlogPostAdmin)
其中,list_display变量中,可以添加自定义的内容。
再运行服务器,刷新界面,标题就出现了!
13、理清blog公共页面的结构:
一个模板(template),负责将传递进来的信息显示出来(用类似字典的对象Context)
一个视图函数(view),负责获取要显示的信息,在数据库中取得。
一个url模式,将收到的请求和视图函数相匹配,也可以向视图函数传递参数。
14、创建模板,在/blog下创建templates文件夹,并在里面新建一个archive.html的文件,如下:
{% for post in posts %}
<h2>{{post.title}}</h2>
<P>{{post.timestamp}}</p>
<p>{{post.body}}</p>
{% endfor %}
15、创建一个视图函数,文件为/blog/view.py。如下:
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader,Context
from blog.models import BlogPost
def archive(requset):
posts = BlogPost.objects.all()
t = loader.get_template("archive.html")
c = Context({'posts':posts})
return HttpResponse(t.render(c))
16、创建一个url模式:
先去/mysite/urls.py中,去掉注释后的url修改为:
url(r'^blog/', include('mysite.blog.urls')),
再在/mysite/blog/urls.py中:
from django.conf.urls import *
#Using django.conf.urls instead of django.conf.usrls.defualt will work. defaults model has been dropped in Django-1.6.
from blog.views import archive
urlpatterns = patterns(' ',
url(r'^$',archive),
)
最后在浏览器输入:127.0.0.1:8000/blog查看最终效果。