• Django学习--介绍Django


    Django:一个可以使web开发工作愉快并且高效的web框架。

    Django提供了通过web开发模式的高度抽象,通过此次学习,明白两个方面:第一,深度解释Django到底作了哪些工作以及如何用Django构建web应用;第二,在适当地方讨论更高级的概念,并解释如何在自己的项目中高效使用这些工具。通过学习,学会快速开发功能强大网站的技巧,并且代码清晰,易于维护。

    首先,框架是什么?

    如果不使用框架,python开发web,最简单,原始和直接的办法就是使用CGI标准,这种方法是这么工作的:首先做一个python脚本,输出html代码,然后保存成.cgi扩展名的文件,通过浏览器访问文件。

    比如,用python cgi脚本显示数据库中最新出版的10本书:

    #! /usr/bin/env python
    
    import MySQLdb
    
    print "Content-Type:text/html/
    "
    print "<html><head><title>Books</title></head>"
    print "<body>"
    print "<h1>Books</h1>"
    print "<ul>"
    
    Connection = MySQLdb.connection(user= 'me',passwd='letmein',db='my_db')
    cursor = connection.cursor()
    cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10")
    
    for row in cursor.fetchall():
         print "<li>%s</li>"%row[10]
    
    print "</ul>"
    print "</body></html>"
    
    connection.close()
    

    首先,用户请求cgi,脚本代码打印Content-Type行,后面跟着换行。再接下来是一些html的起始标签,然后连接数据库并执行一些查询操作,获取最新的十本书。在便利这些书的同时,生成一个书名的html列表项,最后输出html结束标签并关闭数据库连接。 

    尽管实现简单,还是有些问题和不便的地方。

    --应用中有多处需要连接数据库会怎样?每个独立的cgi脚本不应该重复写数据库连接的代码,比较实用的办法是写一个共享函数,可以被多个代码调用。

    --初始化和释放相关的工作应该交给通用的框架来完成

    --如果代码被重用到一个符合的环境中,每个页面对应独立的数据库和密码么?

    --如果web设计师,完全没有python开发经验,但是有需要重新设计页面的话,又将发生什么呢?一个字符写错了,可能导致整个应用崩溃。理想的情况,页面显示的逻辑从数据库中读取书本记录分隔开来,这样web设计师重新设计不会 影响到之前的业务逻辑。

    Django的MVC设计模式

    Django哦你改过3个python文件和html模板文件来完成以上功能。

    分别是models.py ,views.py ,urls.py和latest_books.html

    #models.py (the datebase tables)
    
    from django.db import models
    
    class Book(models.Model):
             name = models.CharField(max_length=50)
             pub_date=models.DateField()
    
    #views.py (the business logic)
    
    from django.shortcuts import render_to_response
    from models import Book
    
    def latest_books(request):
          book_list=Book.objects.order_by('-pub_date')[:10]
          return render_to_response('latest_books.html',{'book_list':book_list})
    
    #urls.py (the URL configuration)
    
    from django.conf.urls.defaults import *
    import views
    
    urlpatterns=pattern(''.(r'^latest/$',view.latest_books),)
    
    #latest_books.html (the template)
    <html><head><title>Books</title></head>
    <body>
    <h1>Books</h1>
    <ul>
    {% for book in book_list %}
    <li> {{book.name}}</li>
    {% endfor %}
    </ul>
    </body></html>
    

    不用关心语法细节;秩序关注分隔后的几个文件:

    --models.py 主要用一个python类来描述数据表,成为模型(model)。运用这个类,可以通过简单的python代码来创建、检索、更新、删除数据库中的记录而无需写一条又一条SQL语句。

    --views.py文件包含了页面的业务逻辑。latest_books()函数叫做视图。

    --urls.py指出了什么样的URL调用什么的视图,/latest/URL将会调用latest_books()这个函数,换句话说,如果域名是example.com,那么浏览网址http://example.com/latest/将会调用latest_books()这个函数

    --latest_books.html是html模板,描述了这个页面是如何设计的,使用带基本逻辑声明的模板语言,如{% for book in book_list %}。

    结合起来,这种模式成为模型-视图-控制器(MVC),简单说,MVC是一种软件开发的方法,把代码的定义和数据访问的方法(模型)与请求逻辑(控制器)还有用户接口(视图)分开来。

  • 相关阅读:
    爬虫 爬取糗事百科热门板块的信息
    爬虫 爬取豆瓣高分电影信息
    django model之Meta选项
    ubuntu下无法获得锁 /var/lib/apt/lists/lock – open (11: 资源暂时不可用)
    django 通过数据库表名获取app名
    JS自定义字符串格式化函数
    django 制作上传图片并预览的效果
    Django序列化
    Django以ajax方式提交form
    Manjaro20 Linux安装VS Code
  • 原文地址:https://www.cnblogs.com/dawnpower/p/4259819.html
Copyright © 2020-2023  润新知