前一篇了解了一个项目的框架文件,总觉得缺点什么,认识还不够清楚,不知道怎么就看见django了,就想试试看。
django的官方文档是英文的,看到最后没有个整体结构,所以整理了下,方面个人后续理解记忆。(文档也有中文的,不过应该不是1.6,而且顺序和内容有些不一样。)
源自:https://docs.djangoproject.com/en/1.6/intro/
Django 学习过程概述:(linux)
1、 环境搭建
前提:已安装2.X版本的python,直接命令行输入python即可查看版本。
1) 安装django
找到适合自己操作系统的版本,选择安装官方版或者开发版;然后import后print(django.get_version())进行版本查看;
创建初始化项目:建立一个工作目录django_project,然后进入,运行命令:django-admin.py startproject mysite(项目名称) 。(注意,项目名称不要与django或test等内建包重名;目录最好建在根目录root外的目录,这样更安全)
此外:django-admin.py需要加入到PATH环境变量中;
这样会在mysite目录下创建如下的目录和文件:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
文件说明:
Manage.py:命令行工具,主要设置环境,允许使用多种方式与所建立的django项目进行交互。可以跟changepassword,createsuperuser,runserver,sql*,help等命令。
__init__.py:空文件,提示python这个目录是python开发包。
Setting.py:项目的配置和设置文件。最基本的包括应用,数据库,时区,语言,URL类型,密钥等信息设置。
Urls.py:项目的URL声明,即网站的目录设置,从地址栏的信息可以看出。
Wsgi.py:WSGI config,WSGI-compatible web server 的入口
运行:
这样只需在manage.py存在的目录中运行python manage.py runserver 地址端口号,就可以访问该地址来得到django的欢迎界面了。
这样,就可以使用django写web应用了。若要开发一个数据库驱动的web,则需要配置数据库服务器。
2) 安装数据库
需要配置settings.py中的文件,默认使用的是SQLite,如果不换其它数据库的话,就使用默认的;如果要更改的话,就需要安装databasebindings,然后更改DATABASES’default’中的ENGINE为‘django.db.backends.数据库名‘;
支持4种数据库,postgreSQL,SQLite3,MySQL,Oracle。优选使用PostgreSQL
从 http://www.djangoproject.com/r/python-pgsql/下载,并根据平台进行选择。
如果使用的不是SQLite,则需要在数据库中增加user,passwd,host。
设置时间:修改settings.py中的TIME_ZONE为Asia/Shanghai。
建立数据表:运行命令 python manag.py syncdb,之后会提示建立授权的superuser账户。
这样环境搭建就已经完成,可以正式建立一个项目了。
2、 创建一个应用
(注意理解项目和应用的区别:项目包含了web站点的大批应用和一系列的配置。应用存在于项目中。)
创建models:
在manage.py存在的目录中运行命令:python manage.py startapp polls,然后会创建一个polls 目录
polls/
__init__.py
admin.py
models.py
tests.py
views.py
在我们的简单poll应用中我们将创建两个models:Poll 和Choice。
Poll包含问题和发表时间;
Choice 包含选择内容和vote 数据两方面。
编辑polls文件夹下的models.py文件
from django.db import models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
这里包含了类的引用,变量,实例方面的设置和使用。
激活models:
编辑mysite下的setting.py文件,将polls添加到INSTALLED_APPS中;
然后运行 python manage.py sql polls 之后会输出一个创建的SQL 表;
再运行 python manage.py syncdb 在database中创建model tables;
使用API:
运行 python manag.py shell 调用命令行窗口,这样就可以与database API进行一些交互了,有点类似于类的引用。
增加__unicode__():
编辑polls文件目录下的models.py,增加__unicode__()方法到poll 和choice 两个类中;
主要是django默认使用unicode,database中存储的数据在返回时被转换为unicode
增加datetime模块的引用:
这样就可以使时间可以按标准时间进行转换,处理时区问题;
自动生成admin 地址
运行 python manage.py runserver 服务,然后登陆http://127.0.0.1:8000/admin/,就出现了了登陆框;
(如果显示时英文,可以修改setting.py中的language为“zh-cn”就可以显示中文了)
登陆后就可以看见一些可编辑内容和用户组了;
设置admin可用poll应用:
编辑polls文件夹下的admin.py文件,如下:
from django.contrib import admin
from polls.models import Poll
admin.site.register(Poll)
然后在admin index页面中就会显示poll了,并且可以进行编辑。
调整:
重新调整fields和edit form和顺序,将admin.py修改为如下:
from django.contrib import admin
from polls.models import Poll
class PollAdmin(admin.ModelAdmin):
fields = ['pub_date', 'question']
admin.site.register(Poll, PollAdmin)
fieldset赋新值:
from django.contrib import admin
from polls.models import Poll
class PollAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
assign arbitrary HTML classes to eachfieldset. "collapse" class that displays aparticular fieldset initially collapsed.
增加相关对象:
即增加添加对象的按钮“加号”。
方法一:register Choice with the admin;
方法二:
Remove the register() call for the Choice model. Then, edit the Poll registration code to read:
from django.contrib import admin
from polls.models import Choice, Poll
class ChoiceInline(admin.StackedInline):
model = Choice
extra = 3
class PollAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]
admin.site.register(Poll, PollAdmin)
This tells Django: “Choice objects are edited on the Poll admin page. By default, provide enough fields for 3 choices.”
调整窗口显示:
使用tabular 显示 inline related 对象,
class ChoiceInline(admin.TabularInline):
#...
自定义 admin change list:
增加一些修改历史的记录和显示
增加 “filter”sidebar :
让使用者可以通过change list 来排列筛选pub_date区域
自定义admin界面显示:
修改页面顶部“Django administration”的显示。
自定义projects的templates:
在项目目录中创建一个templates目录,在mysite/setting.py中添加TEMPLATE_DIRS:
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]
自定义application的templates:
自定义admin 的index page
以上便是 “Writing your first Django app, part 3”前面部分的大致操作过程,后面待续!
1、编写视图函数polls/view.py
主要是HttpResponse
2、创建polls/urls.py
主要进行url栏的指定,即编写urlpatterns,访问的地址栏的url
3、编写mysite/urls.py,建立index视图到URLconf文件的连接,这样网页上就可以显示欢迎的提示了;
分析url的四个参数:正则,视图,kwargs,name
4、添加polls/views.py更多的视图函数:详情,结果,投票;再对应增加url的配置;
5、更加实际的编写view函数:
Polls下面建立一个template目录代替硬编码视图,目录中存放对应的index.html文件
利用shortcuts导入的render模块简化视图函数
异常报错404页面的设置;
增加polls/detail.html页面
6、使用template系统:主要是进行html页面的编辑,for循环,变量添加等tag的使用
7、移除template中的硬编码URLs,即全部写到XX.html文件中
8、增加命名空间到根root URLconf 中,即对urls.py及html进行一些编辑,更加方便多个应用存在时的管理。
对于django 1.6的记录暂到此,主要后面的内容一个是操作没成功,二来全是英文,对初次学习,比较困难。后续学习django 2.0.
本文来自博客园,作者:{Julius},转载请注明原文链接:https://www.cnblogs.com/bestechshare/p/16447751.html
可微信加我,了解更多,WeChat:{KingisOK}