欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Django1.7中文入门教程

shiping 的头像
对Django熟悉?想做一般的WEB开发?好吧,你来对地方了,阅读下面的材料可以让你快速的建立和运行自己的WEB.

Django介绍

快速安装

编写你第一个Django app,part1

编写你第一个Django app,part2

编写你第一个Django app,part3

编写你第一个Django app,part4

编写你第一个Django app,part5

编写你第一个Django app,part6

高级:怎么编写可重复使用的apps

接下来做什么?

为你的Django程序编写第一个补丁

参考:如果你是一个python新手,你可能想要通过知道Django和什么语言相似。Django是纯python语言。所以如果你对python语言有一点点了解,你将更容易上手Django.

如果你是一个完完全全的编程新手,你可能想从“non-programmers python资源列表”开始。

如果你已经掌握了一些其它的编程语言,并且想快速手上python.我们建议从<<Dive into python>>(中文明是:《深入python》)。如果它不适合你,还有很多关于python的书,大家可以参考python官网。

来自 http://jingyan.baidu.com/article/6181c3e066701b152ef15330.html
 

Django1.7中文入门教程:[3]django安装设置

1、下载django安装包。

    django安装包,这个教程里使用是1.7.1的

    下载django安装包可以到官网下载。这里就不贴地址了。

 

2、解压后,使用命令安装:

python setup.py install

注:python版本是:python3,django版本:django-1.7

    如果你安装了两个python版本,那就要使用python setup.py install或者python3 setup.py install 如果你使用的是linux系统,也是一样的操作。

 

3、设置变量环境:

C:\Python34\Scripts;C:\Python34\Lib\site-packages\Django-1.7-py3.4.egg\django\bin;

 

如果在linux下面,一般是不要手动设置变量环境的。直接可以使用的。

来自 http://jingyan.baidu.com/article/db55b6099e7c0a4ba30a2f3e.html
 

Django1.7中文入门教程:[4]django安装测试

这个小测试,用来测试Django的安装运行情况,也能教你简单的生成一个网站。在后面的章节中,还会详细讲解的。

方法/步骤

  1. 创建一个项目:

     

     

     

    django-admin.py startproject web1

  2. 创建一个APP

     

     

    cd web1

    manage.py startapp blog

  3. 初始化数据库

     

     

     

    manage.py syncdb

    然后根据提示填写。

    Password填写后,不要会显示。

    Django1.7中文入门教程:[4]django安装测试
  4. 启动系统

     

     

     

    manage.py runserver

  5. 在浏览器上输入:http://127.0.0.1:8000/

    Django1.7中文入门教程:[4]django安装测试
    END

注意事项

  • 如果安装了两个版本的python,在命令行前面要加一个python3。

来自 http://jingyan.baidu.com/article/2d5afd69e213cc85a2e28e2a.html

 

Django1.7中文入门教程:[5]设计model


在前面我们已经学习了如果创建一个网站。不过没有多少功能,并且没有对数据库做设计。

django是使用python语言对象关系映射来设计数据库布局

工具/原料

  • python3
  • django1.7.1

方法/步骤

  1. 数据模型语法提供丰富的表现模型的方法。代码如下:

     

    from django.db import models

     

    # Create your models here.

    class Reporter(models.Model):

       full_name = models.CharField(max_length=70)

       

       def __str__(self):

           return self.full_name

       

    class Article(models.Model):

       pub_date = models.DateField()

       headline = models.CharField(max_length = 200)

       content = models.TextField()

       reporter = models.ForeignKey(Reporter)

       

       def __str__(self):

           return self.headline

    Django1.7中文入门教程:[5]设计model
  2. 2

    接下来,运行Django命令自动创建数据为表格

     

     

     

    python3 manage.py migrate

    migrate命令着眼于所有有效models并创建不存在的数据表格。
    来自 http://jingyan.baidu.com/article/574c52193f79f86c8d9dc12a.html

     

    Django1.7中文入门教程:[6]第一个项目1_1

    •  
    • |
    • 浏览:558
    • |
    • 更新:

       让我们从一个实例开始学习。

     

        通过这个教程,我们将带你学习创建一个基础poll应用

     

        这个教程由两部分组成:

     

    发布一个网站,让别人访问polls和对他们投票。

    一个管理后台,可以让你添加,更改和删除polls.

    工具/原料

    • django1.7
    • python3.4.2

    方法/步骤

    1. 检测django版本

      我们假设你已经安装了Django,可以通过下面的命令来测试Django版本。

       

       

      >>> import django

      >>> django.get_version()

      '1.7'

       

      如果你已经安装了Django,将会看到你安装在版本号。我用的是1.7的版本。如果没有安装,将会提示错误“No module named django”。

       

          这个教程是适用Django1.7 和 python3.2或更高版本。如果Django版本不匹配,你可以参考你安装的教程,或者升级你的Django版本。

    2. 创建一个项目

      如果这是你第一次使用Django,你将不得不细心安装。换句话说,你需要自动生成一些代码以便建立一个Django项目-并且设置Django,包括数据库,配置,Django特有的选项和应用设置。

          cd到指定目录以便存放你的代码,然后运行下面命令:

      django-admin.py startproject mysite

      上面的命令在你当前目录将创建一个mysite目录,如果没有成功运行,可以参考Problems running django-admin.py.

      NOTE:

          项目必须避免使用django和python组件名。

          创建的项目文件如下:

         mysite/

              manage.py

              mysite/

                  __init__.py

                  settings.py

                  urls.py

                  wsgi.py

    3. 数据库设置

      打开mysite/mysite/setting.py文件找到下面这段代码

       

      DATABASES = {

         'default': {

             'ENGINE': 'django.db.backends.sqlite3',

             'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

         }

      }

      如果使用sqlite3数据库,保持默认就可以了。

      设置好后,我们在使用带数据库网站前,必须在数据库里创建表格。使用如下命令:

       

       

      D:\python\www\mysite>python manage.py migrate

       

       

       

      Django1.7中文入门教程:[6]第一个项目1_1
    4. 运行Django服务器

      D:\python\www\mysite>python manage.py runserver

       

      如果出现下面的这段文字,恭喜你,你的网站运行成功了。就可以在浏览器访问了。

       

       

      Performing system checks...

       

      System check identified no issues (0 silenced).

      October 15, 2014 - 02:05:41

      Django version 1.7, using settings 'mysite.settings'

      Starting development server at http://127.0.0.1:8000/

      Quit the server with CTRL-BREAK.

    5. 后记:实践是检验真理的唯一标准,多动手吧!!!

                上面的内容都是我自己学习的记录,有什么不对的地方,请留言!一起讨论!


    来自  http://jingyan.baidu.com/article/7908e85c7d7a40af481ad2de.html

     

    Django1.7中文入门教程:[7]第一个项目1_2

    •  
    • |
    • 浏览:527
    • |
    • 更新:

    在这一节主要讲应用的创建和models设置,这里非常重要,一定要认真学习哦。

    工具/原料

    • python3.4.2
    • django1.7.1

    方法/步骤

    1. 创建app

       

       

      D:\python\www\mysite>python3 manage.py startapp polls

      应用polls的目录如下:

       

       

      polls/

         __init__.py

         admin.py

         migrations/

             __init__.py

         models.py

         tests.py

         views.py

    2. 编辑poll/models.py文件

       

       

      from django.db import models

       

      # Create your models here.

      class Question(models.Model):

              question_text = models.CharField(max_length=200)

              pub_date = models.DateTimeField('date published')

       

      class Choice(models.Model):

              question = models.ForeignKey(Question)

              choice_text = models.CharField(max_length=200)

              votes = models.IntegerField(default=0)

       

       

    3. 激活models

      编辑mysite/settings.py,添加polls应用。

       

       

      INSTALLED_APPS = (

         'django.contrib.admin',

         'django.contrib.auth',

         'django.contrib.contenttypes',

         'django.contrib.sessions',

         'django.contrib.messages',

         'django.contrib.staticfiles',

         'polls'

      )

       

       

    4. 现在Django已经知道项目包括polls应用,运行如下命令:

       

       

       

      D:\python\www\mysite>manage.py makemigrations polls

       

       

      然后显示如下内容:

       

       

       

      Migrations for 'polls':

       0001_initial.py:

         - Create model Choice

         - Create model Question

         - Add field question to choice

       

       

    5. 运行sqlmigrate命令可以返回SQL语句:

       

       

       

      python3 manage.py sqlmigrate polls 0001

       

       

       

      返回如下:

       

       

       

      BEGIN;

      CREATE TABLE "polls_choice" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL);

      CREATE TABLE "polls_question" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,

      "question_text" varchar(200) NOT NULL, "pub_date" datetime NOT NULL);

      CREATE TABLE "polls_choice__new" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL, "question_id"

      integer NOT NULL REFERENCES "polls_question" ("id"));

      INSERT INTO "polls_choice__new" ("id", "choice_text", "votes") SELECT "id", "cho

      ice_text", "votes" FROM "polls_choice";

      DROP TABLE "polls_choice";

      ALTER TABLE "polls_choice__new" RENAME TO "polls_choice";

      CREATE INDEX polls_choice_7aa0f6ee ON "polls_choice" ("question_id");

       

      COMMIT;

       

       

    6. 6

      现在运行migrate创建models表格。

      python3 manage.py migrate

       

      返回:

       

      Operations to perform:

       Apply all migrations: admin, auth, sessions, polls, contenttypes

      Running migrations:

       Applying polls.0001_initial... OK



     

    Django1.7中文入门教程:[8]Django的API使用

    使用shell来测试django数据库的操作。并做一个app里的models设置。

    方法/步骤

    1. 如果要使用Django Shell,就必须使用下面的这个命令:

       

       

      python3 manage.py shell

    2. 导入polls.models模块

       

       

      from polls.models import Question, Choice

    3. 显示所有数据:

       

       

      Question.objects.all()

    4. 导入时间模块

       

       

      from django.utils import timezone

    5. 创建一个Question对象

       

       

      q = Question(question_text="What's new?", pub_date=timezone.now())

    6. 保存对象到数据库,可以使用save()函数。

       

       

      q.save()

      现在数据库表格有一个ID字段。

    7. 7、通过对象属性引用来读取数据。

       

       

       

      q.id

       

       

       

       

       

      q.question_text

       

       

       

       

      q.pub_date

    8. 再编辑polls/models.py,让数据对象有返回值。

       

       

       

      import datetime

      from django.db import models

      from django.utils import timezone

       

       

      # Create your models here.

      class Question(models.Model):

          question_text = models.CharField(max_length=200)

          pub_date = models.DateTimeField('date published')

       

          def __str__(self):

              return self.question_text

       

       

          def was_published_recently(self):

              return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

       

       

      class Choice(models.Model):

          question = models.ForeignKey(Question)

          choice_text = models.CharField(max_length=200)

          votes = models.IntegerField(default=0)

       

          def __str__(self):

              return self.choice_text

       

       

      让models.py的修改写入到数据库,python manage.py migrate

       

      Django1.7中文入门教程:[8]Django的API使用
    9. 9

      让models.py的修改写入到数据库,使用如下命令:

      python manage.py migrate

      来自 http://jingyan.baidu.com/article/4f34706ed3c810e387b56dfa.html
       

      Django1.7中文入门教程:[9]Django API 2


      shell API的功能主要是用来调试,实时反馈。也要可以用来数据查询等。

      方法/步骤

      1. 重新运行python manage.py shell

        1、首先要导入数据库模块

         

         

        >>> from polls.models import Question, Choice

      2. 确定models.py已经添加__str__()函数,并且已经运行。

         

         

         

        >>> Question.objects.all()

        [<Question: What's up?>, <Question: What's new?>]

         

         

        使用Question.objects.all(),可以返回数据表的数据。

      3. Django提供丰富的数据库查询API,全部由关键字参数驱动。

         

         

         

        >>> Question.objects.filter(id=1)

        [<Question: What's up?>]

         

         

        filter(id=1)用来筛选指定参数。

         

         

         

         

        >>> Question.objects.filter(question_text__startswith='What')

        [<Question: What's up?>, <Question: What's new?>]

         

         

        question_text__startswith由两部分组成,字段:question_text 后缀关键字:__startswith.

         

        question_text__startswith='What'作用是:筛选指定字段,以‘What’开头的内容。

      4. 通过主键查询是最普通的方式,所以Django提供了一种快捷方式,

        下面的这个代码和Question.objects.get(id=1)

         

         

         

        >>> Question.objects.get(pk=1)

        <Question: What's up?>

      5. 确认我们自定义的方法was_published_recently()生效。

         

         

        >>> q = Question.objects.get(pk=1)

        >>> q.was_published_recently()

        True

      6. 给Question添加几个选项,需要构建一个Choice对象,插入声明,添加选择到设置有效的选项,

        并且返回新Choice对象。Django创建一套另一个类的ForeignKey relation.

         

         

         

        >>> q = Question.objects.get(pk=1)

         

         

         

        从关联对象设置中显示任意选项

         

         

         

        >>> q.choice_set.all()

        []

         

         

        创建3个选项

         

         

         

         

        >>> q.choice_set.create(choice_text="not much",votes=0)

        <Choice: not much>

        >>> q.choice_set.create(choice_text="The sky",votes=0)

        <Choice: The sky>

        >>> c = q.choice_set.create(choice_text="Just hacking again",votes=0)

         

         

        Choice对象有一个API通道和Question对象关联。

         

         

         

         

        >>> c.question

        <Question: What's up?>

         

         

        反过来亦然,Question对象获得一个通道到Choice对象

         

         

         

         

        >>> q.choice_set.all()

         

         

         

        通过count()函数可以取得选项数量。

         

         

         

        >>> q.choice_set.count()

         

         

         

        删除选项:

         

         

         

        >>> q.choice_set.all()

        END

      注意事项

      • 上面所用的是python3,django1.7,其它版本运行不一定成功。

        来自 http://jingyan.baidu.com/article/7c6fb42869f42380642c9096.html


        Django1.7中文入门教程:[10]创建admin帐号

        •  
        • |
        • 浏览:662
        • |
        • 更新:

        在前面我们已经说了关于Django的基本设置和models的编写和高度,这里我们来看一下怎么创建一个Django后台帐号。

        方法/步骤

        1. 首先我们要新建一个用户名,用来登陆管理网站,可以使用如下命令:

          python manage.py createsuperuser

        2. 输入想要使用的用户名:

           

           

          Username (leave blank to use 'administrator'): user01

        3. 输入email:

           

           

          Email address: (在这里输入你的自己的邮箱帐号)

        4. 输入密码,需要输入两次,并且输入密码时不会显示出来:

           

          Password:

          Password (again):

          当两次密码都相同的时候,就会提示超级帐号创建成功。

          Superuser created successfully.

           

        5. 运行服务:

           

           

          python manage.py runserver

        6. 浏览器地址栏输入:http://127.0.0.1:8000/admin

          Django1.7中文入门教程:[10]创建admin帐号
        7. 上面的输入刚才新建的用户名和密码。

          Django1.7中文入门教程:[10]创建admin帐号
          END

        注意事项

        • 我使用的是python3.4,电脑上只有这一个版本,如果你的电脑上还有其它版本,那就他用python3的命令。
        • 喜欢一起研究django的友友,可以关注一下我哦。

          来自 http://jingyan.baidu.com/article/f71d6037770a7b1ab641d1b6.html


          • Django1.7中文入门教程:[11]修改admin页面

            分步阅读

            进入admin管理页面后,就可以看到默认的界面。在这里,我们可以添加一些自己的内容。

            方法/步骤

            1. 修改poll/admin.py文件,使其同步到admin管理页面中。

              注册models中的Question

              from django.contrib import admin

              from polls.models import Question

              #注册models,Django就会显示到admin页面。 

              admin.site.register(Question)

            2. 修改poll/admin.py后,保存。

              页面刷新后,如下图,你会发现,多了些东西。

              Django1.7中文入门教程:[11]修改admin页面
            3. 点击Questions进去,就会可以进行管理,并且可以看到数据库里的记录。

              Django1.7中文入门教程:[11]修改admin页面
            4. 点击“What's new?”,就可以修改里面的内容了。

              Django1.7中文入门教程:[11]修改admin页面
              END

            注意事项

            • 注意事项见页面的几节的内容哦。

            来自 http://jingyan.baidu.com/article/afd8f4de79c8b034e286e9b6.html

             

            Django1.7中文入门教程:[12]自定义admin排列

            • admin自己创建的内容排列都是垂直排列的。当然这样也是最简单的。这里我们来改变它的排列方式。

            方法/步骤

            1. 使用admin.site.register(Question)来注册模块,Dango能构建一个默认排列。通常,你想要自定义来排列admin样式。

              #edit polls/admin.py

              from django.contrib import admin

              from polls.models import Question

               

              class QuestionAdmin(admin.ModelAdmin):

              fields = ['pub_date', 'question_text']

              admin.site.register(Question, QuestionAdmin

            2. 通过上面代码的修改,可以看到,下面显示位置的改变。

              Django1.7中文入门教程:[12]自定义admin排列
            3. 仅仅两个参数并不能让人感到映像深刻,但是对很多字段的admin排列来说,选择一种合理的排列方式是非常重要的。

              我们来再一次修改polls/admin.py文件。

              你根据这个模式,创建一个admin对象模块,放置到admin.site.register()第二个对数。

              #edit polls/admin.py

              from django.contrib import admin

              from polls.models import Question

               

              class QuestionAdmin(admin.ModelAdmin):

              fieldsets = [

                              (None, {'fields':['question_text']}),

                              ('Date information',{'fields':['pub_date']})

                              ]

              admin.site.register(Question, QuestionAdmin)

              Django1.7中文入门教程:[12]自定义admin排列
            4. fieldsets的每个元组里面的第一个参数,是控件标题。就像下面的:Date information.

              Django1.7中文入门教程:[12]自定义admin排列
            5. Django提供了一个"collapse"类来显示或隐藏一个控件,初始为收缩状态。如果有一个很长的列表,这个功能就非常有用。

              #edit polls/admin.py

              from django.contrib import admin

              from polls.models import Question

               

              class QuestionAdmin(admin.ModelAdmin):

              fieldsets = [

                              (None, {'fields':['question_text']}),

                              ('Date information',{'fields':['pub_date'],'classes':['collapse']})

                              ]

               

              admin.site.register(Question, QuestionAdmin)

              Django1.7中文入门教程:[12]自定义admin排列
            6. 修改后,打开网页,你就可以看到多了一个按钮。

              Django1.7中文入门教程:[12]自定义admin排列
              END

            注意事项

            • 喜欢我的东西,就多分享给你的朋友们吧!!欢迎大家一下研究哦。

            • 来自 http://jingyan.baidu.com/article/3d69c5517143e0f0cf02d7aa.html

              Django1.7中文入门教程:[13]添加关联对象

              • 在上一节中,还有一个问题没有说到,就是改变排列样式,将在这一节里面讲解。这一节还要说的一个内容就是关联对象。

              方法/步骤

              1. 1

                我们已经在管理页面添加了Question。但是Question有很多选项。现在管理页面还不能显示选择控件。

                这里有两种方式可以解决这个问题。第一是注册Choice对象。

                Django1.7中文入门教程:[13]添加关联对象
              2. 2

                现在Django管理页面已经有一个"Choice"选项了。如图下:

                Django1.7中文入门教程:[13]添加关联对象
              3. 3

                在这个表单中,“Question”字段是一个包括数据库里的所有question选择框.Django知道,ForeignKey在admin代表一个<select>选择框。

                 

                绑定Choice对象到Question中。

                Django1.7中文入门教程:[13]添加关联对象
              4. 4

                上面的更改,Django认为是:Choice对象可以在Question管理页面被编辑。默认为3条选择记录。

                Django1.7中文入门教程:[13]添加关联对象
              5. 5

                代码生效后,运行后,就是上面图片上的样子,extra = 3 代表初始显示是3.

                 

                还有一个小问题,就是要翻很多屏。能不能横向排列了?Django的强大,就是这么牛,你只要改一下ChoiceInline类的里面的问题。

                Django1.7中文入门教程:[13]添加关联对象
              6. 6

                使用admin.TabularInline代替admin.StackedInline),显示就完全改变了。

                Django1.7中文入门教程:[13]添加关联对象
                END

              注意事项

              • 代码都截图了,不要偷懒,自己敲代码也不错哦。 

                来自 http://jingyan.baidu.com/article/a24b33cd6ca4a319fe002baa.html


                Django1.7中文入门教程:[14]自定义列表样式

                分步阅读

                这里我们说怎么信息显示在一行里面。

                方法/步骤

                1. 现在看起来还不错

                  Django1.7中文入门教程:[14]自定义列表样式
                2. 另外一种排列是把相关信息显示在一行里面。

                  但是要用到list_display 管理选项。

                  Django1.7中文入门教程:[14]自定义列表样式
                3. 添加一行list_display代码,赋值一个元组(两个参数)。网页显示如下

                  Django1.7中文入门教程:[14]自定义列表样式
                4. 另外,我们加入在上一节课程中自定义的方法:was_published_recently

                  Django1.7中文入门教程:[14]自定义列表样式
                5. 现在看起来是这样子的。

                  Django1.7中文入门教程:[14]自定义列表样式
                6. 点击上面的表头,都可以自动排序,但是was pulished recently不可以排列。

                  如果让这一些也都有所改变,需要更新一下polls/model.py

                  Django1.7中文入门教程:[14]自定义列表样式
                7. 更新完之后,就是下面这个情况:

                  Django1.7中文入门教程:[14]自定义列表样式




         






       



    来自 http://jingyan.baidu.com/article/2d5afd69e292cc85a2e28eab.html
     

    Django1.7中文入门教程:[15]添加控件

    在这一节,我们在上一节的基础上添加两个控件,一个是按日期筛选,另一个是查询。

    方法/步骤

    1. 1

      再编辑polls/admin.py,加一行代码来改进Question列表,过滤要使用list_filter。

      Django1.7中文入门教程:[15]添加控件
    2. 2

      添加“Filter”边侧栏,可以让我们改变pub_date排序。

      Django1.7中文入门教程:[15]添加控件
    3. 3

      filter数据类型显示依赖于field类型,因为pub_date 是DateTimeField,Django能自动识别并适应选择“Today”,"past 7days","This month","This year".

       

      让我们加入一行代码使其有搜索功能search_fields = ['question_text']。再编辑polls/admin.py

      Django1.7中文入门教程:[15]添加控件
    4. 4

      在列表最上面有一个搜索框,当在搜索框输入检索词的时候,Django将搜索question_text字段内容。也可以搜索多个字段内容。因为Django是使用LIKE查询,限制搜索字段的数目的一个原因是数字将使数据库搜索更容易。

      默认每页显示100条

      Django1.7中文入门教程:[15]添加控件


    来自 http://jingyan.baidu.com/article/ca2d939d2350adeb6c31ceab.html
     

    Django1.7中文入门教程:[16]自定义admin外观



    • 很明显,Django管理页面看上去真的很丑。他只是一个点位文本。

    虽然改变外观是很容易的,但可以使用Django自带的模板系统。Django管理本身就很强大,他的接口使用的是Django自己的模板系统。

    方法/步骤

    1. 自定义项目模板

          在项目目录中创建一个templates目录,Django能接受templates能放到你系统的任何地方。然而把templates目录放到项目目录是一个很明智的选择。

    2.     打开mysite/settings.py文件,添加一个TEMPLATE_DIRS设置:

      Django1.7中文入门教程:[16]自定义admin外观
    3. TEMPLATE_DIRS 是一个迭代系统目录,用来检测Django的模块,是一个搜索目录。

       

      现在在 templates目录中新建一个admin文件夹。把目录C:\Python34\Lib\site-packages\Django-1.7- py3.4.egg\django\contrib\admin\templates\admin中的base_site.html文件,复制到工程目录 下面的\templates\admin。

      注:如果亲很难找到Django的源文件,那就运行下面的代码:

      Django1.7中文入门教程:[16]自定义admin外观
    4. 然后,编辑base_site.html文件,找到下面这段代码:

      {{ site_header|default:_('Django administration') }}

      再用Polls Administration替换掉。换了之后的代码如下:     Polls Administration

      完整代码如下:

      Django1.7中文入门教程:[16]自定义admin外观
    5. 我们用这个方法告诉你怎么重写模块,在真实的项目中,你可能使用django.contrib.admin.AdminSite.site_header 属性来更轻松完成这个特殊制定。

       

          这 个模板文件包含很多内容,如:{% block branding %} 和 {{ title }};{% 和{{都是Django的一部分的模块语言。当Django渲染admin/base_site.html时,这种模板语言将生成最终的THML页面,如 果你现在还不是很了解这种语言,没有关系,我们会在一下节中讲解。

       

          任何Django默认admin模块都可以被重写,要重写模板,只要作上面相同的事就可以了。

    6. 自定义你的APP的模板

          机敏的读者可能会问:默认的TEMPLATE_DIR是空的,那Django是怎样找到默认的 admin模板。答案是,默认情况,Django自动查找目录/templates/子目录里面的每个应用包,作为后备。(不要忘记 django.contrib.admin也是一个应用)

          我们的polls应用并不是一个复杂的应用,没有必要自定义admin模板。但是如果这是一个更复杂和需要修改Django标准admin模板和一些方法。更明智的方法就是修改应用模板。

    7. 自定义admin index页面

          和上面相似,你也想自定义admin index页面。

          默认情况,在INSTALLED_APPS显示所有的app,admin应用已经按照字母顺序被注册好了。你可能想对布局做显著变化。毕竟,index是admin最重要的页面,它应该具有易用性。

       

          自定义admin/index.html模板页面。(和前面重写admin/base_site.html模板是一样的,从默认目录复制到自定义模板页面中),编辑文件,你将看到它使用一模板变量:app_list.这个变量包括每一个已经安装的app.


    来自 http://jingyan.baidu.com/article/4b07be3c6e3f2548b380f3ab.html
     

    Django1.7中文入门教程:[17]编写第一个view

    view作用是什么了?在这一节就会慢慢了解!我们在这一节,开始把内容显示到前台页面中。

    方法/步骤

    1. 打开polls/views.py,代码如下:

      Django1.7中文入门教程:[17]编写第一个view
    2. 这是一个简单的view.

      调用view文件,我们要映射到URL。但因为这个,我们需要一个URL配置文件。

      我们在polls目录里新建一个URL配置文件,urls.py。

      在polls/urls.py文件包括如下代码:

      Django1.7中文入门教程:[17]编写第一个view
    3. 下一部就是要配置主mysite/urls.py文件,

      Django1.7中文入门教程:[17]编写第一个view
    4. 现在你可以在浏览器的地址栏里输入:http://localhost:8000/polls/ ,就可以看到网页上显示:“Hello,world.you're at the polls index.”,这就是你在views中定义的。

      url() argument:regex

      "regex"是一个常用正则表达式,他是用来匹配字符串的。在这个项目中,url复写。

      url() argument:view

          当Django找到一个表达式匹配的时候,它便会调用一个特定的方法,使用一个HttpRequest对象作为第一个参数并且捕获从正则表达式传过来的值。

      来自  http://jingyan.baidu.com/article/09ea3ede392194c0afde3947.html

    Django1.7中文入门教程:[18]完善views

    •  
    • |
    • 浏览:297
    • |
    • 更新:

    进一步完善views,并使用urls做映射。这一节很重要,详细了解网址的方式。

    方法/步骤

    1. 现在我们在polls/views.py添加更多的代码。这些views稍微有些不同,因为他们带了一个参数。

      Django1.7中文入门教程:[18]完善views
    2. 现在来设置polls/urls.py文件。

      Django1.7中文入门教程:[18]完善views
    3. 在你的浏览器看一下,

      Django1.7中文入门教程:[18]完善views
    4. 在“/polls/5/”,它将运行detail方法,并且显示你在地址栏里提供的任何ID,再试试:“/polls/5/results/” 和“/polls/5/vote/”。这些将显示results和vote页面的占位符。

      当 有人从你的网站上请求一个页面,“/polls/5/”,Django将加载mysite.urls  Python模块,因为它指向你的ROOT_URLCONF设置。它会找到一个变量名为urlpatterns和有次序的正则表达式。使用 include()方法来简单的引用其它URLconfs.在include()里面的正则表达式,不要用$符号,但是需要一个”/“符号。

      include() 的理念是使URLS更开放。自从polls是在它自己的URLconf设置(polls/urls.py),它们可以放置在”/polls“,或者 是”fun_polls“,又或者是”/content/polls“,又或者是其它根目录下,app仍然可以正常工作。

      当用户访问”/polls/5/“,系统将发生了什么?

       

      Django将查找匹配‘^polls/’

      然 后去掉相匹配文本("polls/")然后发送剩下文本-”5/“-到”polls.urls“设置作为更进一步的匹配 r'^(?P<question_id>\d+)/$'结果调用detail()方法detail(request=< HttpRequest object>, question_id='34')

       

      question_id='5',就来自(?P<question_id>\d+)。

    来自 http://jingyan.baidu.com/article/dca1fa6fabc31df1a5405247.html

     

    Django1.7中文入门教程:[19]让views做实事

    •  
    • |
    • 浏览:274
    • |
    • 更新:
    • Django1.7中文入门教程:[19]让views做实事 1
    • Django1.7中文入门教程:[19]让views做实事 2
    • Django1.7中文入门教程:[19]让views做实事 3
    • Django1.7中文入门教程:[19]让views做实事 4
    分步阅读

    每一个view都负责做一个二选一的事情:返回一个HttpResponse对象包含请求页面的内容。或者引发HTTP404异常,剩下的就看你自己了。

     

    view可以从数据库里读取记录。它可以使用像Django这样的模板系统或者第三方PYTHON模板系统。它可以生成一个PDF文件,输出XML,在忙碌的时候新建一个ZIP文件,使用python库做所有你想做的事情。

    方法/步骤

    1. Django需求是HttpResponse.或者是异常处理。

      因为它非常方便,现在我们使用Django自己的数据库API,在前我们已经讲过一些了,这里我们是目标是一个新的index()view.让它显示系统中最近5条poll问题,并根据发布日期用逗号分隔。

      编辑:polls/views.py

      Django1.7中文入门教程:[19]让views做实事
    2. 这里有一个问题,页面设计是在view中使用的是硬编代码。如果你想改变页面的展现方式,你将必须重新编辑python代码。让我们使用Django的模板系统来分离python代码和设计。

          在templates目录里创建一个polls子目录。再在polls目录里新建一个文件index.html。换句话说,模板 在:polls/templates/polls/index.html。因为app_directories模板怎样加载工作在上面已经描述。你可以参 考Django的下面的模板:polls/templates/polls/index.html

      Django1.7中文入门教程:[19]让views做实事
    3. 现在我们要更新一下polls/views.py里面的index方法,以便使用模板。

      Django1.7中文入门教程:[19]让views做实事
    4. 上面的代码加载模板调用:polls/index.html.并且传递它的内容。内容是一个python对象模板变量的字典映射。

      通过在你的浏览器里的“/polls/”加载页面,你将可以看到页面显示的内容。并且超链接到detail页面。

      加载一个模板是一个非常常用的词,填充内容返回一个HttpResponse对象的结果返回渲染模板。Django提供了一个简短的方法。下面我们在view重新写一下index()方法:

      Django1.7中文入门教程:[19]让views做实事
    5. NOTE:一旦我们像这样完成了views里面的内容,就不再需要导入loader,RequestContext和HttpResponse,不过在这里,我们还要保持HttpResponse,因为detail,results,vote方法还需要使用。

      render()方法使用request对象做为它的第一个参数,模板名字为第二个参数,在这里使用的是:“/polls/index.html”,一个字典做为第三个参数。它返回一个渲染好的内容的模板的HttpResponse对象

    来自 http://jingyan.baidu.com/article/e52e3615aa279740c70c5147.html

     

    Django1.7中文入门教程:[20]Raising 404异常

    •  

    每一个程序,都需要处理异常,虽然异常在语言中有一部分已经处理了,但是为了更友好,更方便,我们可以自己来处理,那django就是怎么处理的了?

    方法/步骤

    1. 现在我们来处理view.py中的detail方法。用来显示具体的问题。

      Django1.7中文入门教程:[20]Raising 404异常
    2. 这里有一个新的概念,如果question对象需要的ID不存在,view就会抛出一个Http404异常。

      我们将在后面讨论polls/detail.html模板,但如果你想快速的让你的写的代码工作起来,在polls/templates/polls/detail.html文件下面编辑一下:

      Django1.7中文入门教程:[20]Raising 404异常
    3. 一个精简的方法:get_object_or_404(),在这里要导入模块:get_object_or_404,我们来重新写detail()方法:

      Django1.7中文入门教程:[20]Raising 404异常
    4. get_object_or_404()方法的第一个参数是Question对象,第二个参数是从地址栏传递过来的的任意数字。

    来自 http://jingyan.baidu.com/article/d71306350c6c3813fcf47576.html
     

    Django1.7中文入门教程:[21]使用模板系统

    这一节说一下模板系统的使用,去除模板中的URLS的硬性代码,URL命名空间,URL命名空间。让代码更人性化。

    方法/步骤

    1. 1

      回到我们应用中的detail()方法,现在我们重新编辑polls/detail.html.

      Django1.7中文入门教程:[21]使用模板系统
    2. 2

      模板系统使用“.”符号来进入到变量属性,例如:{{question.question_text}},因为在view中的detail()方法中传递了一个question对象过来。

      END

    去除模板中的URLS的硬性代码

    1. 1

      还记得我们在写polls/index.html中的链接代码的时候,是这样写的:

      Django1.7中文入门教程:[21]使用模板系统
    2. 2

      自从你在polls.urls模板的url()方法中定义了一个名字参数,你就可以使用{% url %}模板来代替传统的URL路径定义。

      Django1.7中文入门教程:[21]使用模板系统
    3. 3

      这种方式能正常工作,主要是通过polls.urls模块中的URL定义,让我们来再看一下下面这行代码,name = ‘detail’定义如下:

      Django1.7中文入门教程:[21]使用模板系统
    4. 4

      如果你想改变detail的URL样式,比较像polls/spe/12就只要做如下改变就可以了:

      polls/urls.py

      Django1.7中文入门教程:[21]使用模板系统
      END

    URL命名空间

    1. 我们现在的项目只有一个APP,但在实际的DJANGO开发中,有5个,6个,或是更多。那Django在这些APP中是如何区分URL名字的?例 如:polls应用里面有一个detail view,并且在可能还有一个blog应用?怎么样使用{% url %} 模板?

       

      答案是添加一个命名空间到你的root URLconf中。也就是mysite/urls.py文件里

      Django1.7中文入门教程:[21]使用模板系统
    2. 2

      现在更改polls/index.html

      Django1.7中文入门教程:[21]使用模板系统



    来自  http://jingyan.baidu.com/article/b0b63dbfc708994a49307076.html


     

     

普通分类: