美文网首页
Django入门文章1

Django入门文章1

作者: ZhouScott | 来源:发表于2015-02-27 18:16 被阅读129次

本系列教程适用于Django入门,文章翻译自官方英文文档,在官方文档的基础上进行web开发和python语言学习的扩展。下面就开始了。请指教。

设计model

web开发的基础是数据。Django中可以不直接对数据库进行操作,使用ORM对数据进行描述。下面是一个入门例子:

    from django.db import models
    
    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

本例中定义了两个集成自models.Model的类 Reporter和Article。

安装

    python manage.py migrate
    
    D:\proj\mysite>python manage.py migrate
    Operations to perform:
      Apply all migrations: admin, contenttypes, polls, auth, sessions
    Running migrations:
      Applying contenttypes.0001_initial... OK
      Applying auth.0001_initial... OK
      Applying admin.0001_initial... OK
      Applying polls.0001_initial... OK
      Applying sessions.0001_initial... OK

migrate命令检查所有的models,创建在数据库中没有建立。

1. python manage.py makemigrations
2. python manage.py migrate

创建新的model的时候,分别执行上面的步骤。把数据库更新。

自由的api

    D:\proj\mysite>python manage.py shell
    Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on win
    32
    Type "help", "copyright", "credits" or "license" for more information.
    (InteractiveConsole)
    >>> from news.models import Reporter,Article
    >>> Reporter.objects.all()
    []
    >>> r = Reporter(full_name="John Smith")
    >>> r.save()
    >>> Reporter.objects.all()
    [<Reporter: John Smith>]
    >>> r.id
    1L
    >>> r.full_name
    'John Smith'
    >>> Reporter.objects.get(id=1)
    <Reporter: John Smith>
    >>> Reporter.objects.get(full_name__startswith='John')
    <Reporter: John Smith>
    >>> Reporter.objects.get(id=2)
    Traceback (most recent call last):
      File "<console>", line 1, in <module>
      File "C:\Python27\lib\site-packages\django-1.7.1-py2.7.egg\django\db\models\ma
    nager.py", line 92, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
      File "C:\Python27\lib\site-packages\django-1.7.1-py2.7.egg\django\db\models\qu
    ery.py", line 357, in get
    self.model._meta.object_name)
    DoesNotExist: Reporter matching query does not exist.
    >>> from datetime import date
    >>> a = Article(pub_date=date.today(), headline="Django is cool", content="Yeah"
    , reporter=r)
    >>> a.save()

api的学习需要看相关文档,了解Django的ORM如何对数据库进行操作。

看数据库的时候发现了一个外键的问题:

  1. 外键关联的是一个对象,自动生成的外键名称会在关联的对象的名称后面加上个"_id"作为字段名称
  2. 默认情况下,外键会自动创建索引,会自动做级联删除,默认的外键是

Admin接口

不仅是一个基架,更是一个整体。Django能创建一个专业的管理Model对象的接口。
编辑mysite/news/admin.py文件

    from django.contrib import admin
    from . import models
    admin.site.register(models.Article)

设计URLS

创建一个叫URLconf的python module。设计一个urls.py

    from django.conf.urls import patterns
    from .  import views
    
    urlpatterns = patterns('',
        (r'^articles/(\d{4})/$', views.year_archive),
        (r'^articles/(\d{4})/(\d{2})/$', views.month_archive),
        (r'^articles/(\d{4})/(\d{2})/(\d+)/$', views.archive_detail),
    )

设计Views

每个view负责返回一个HttpResponse object或者返回一个404异常。

一个简单的例子。

    from django.shortcuts import render
    
    from .models import Article
    
    def year_archive(request, year):
        a_list = Article.objects.all()
        context = {'year':year, 'article_list':a_list}
        return render(request, 'news/year_archive.html', context)

获取数据,把数据渲染到模板上。

相关文章

  • Django入门文章1

    本系列教程适用于Django入门,文章翻译自官方英文文档,在官方文档的基础上进行web开发和python语言学习的...

  • Django 学习笔记之初识

    上篇文章讲述 Django 环境搭建, 在文章最后部分还有 6 篇 Django 简单入门的文章。后来我自己以一个...

  • Django DRF 中的模型序列化到底该怎么用?

    1. 前言 大家好,我是安果! 之前有写过一篇文章,聊到如何快速入门 Django DRF 5 分钟,带你快速入门...

  • Django的一些网站

    中文文档Anaconda虚拟环境安装及Django安装django入门与学习-django的安装与测试-1

  • Django入门

    Django入门项目创建、配置 1. Django安装与使用 1.1 安装虚拟环境 1.命令安装 pip inst...

  • Docker中如何部署Django uwsgi nginx应用

    发现一篇不错的文章: Docker入门,如何部署Django uwsgi nginx应用 | 记...

  • Django入门1

    Django 我单独起个标题,因为页数有点多,且第一次接触后端的知识。 Django 是一个 web 框架 —— ...

  • django入门-1

    一 .创建环境1.安装虚拟环境包(前提是安装好python环境):windows:pip install virt...

  • Django入门1

    关于DjangoDjango是一个开放源代码的Web应用框架,由Python写成。采用了MVT的框架模式,即模型M...

  • 【Django】入门实践指南之系统设计|第1篇

    课程:Django入门实践指南 - 论坛系统打卡时间:2018.4.23 目录 【Django】入门实践指南之环境...

网友评论

      本文标题:Django入门文章1

      本文链接:https://www.haomeiwen.com/subject/ewupxttx.html