前一篇了解了一个项目的框架文件,总觉得缺点什么,认识还不够清楚,不知道怎么就看见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”前面部分的大致操作过程,后面待续!

上接part 2

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.









posted on 2022-07-05 18:12  我在全球村  阅读(15)  评论(0编辑  收藏  举报