美文网首页
初识Django

初识Django

作者: 萍水间人 | 来源:发表于2019-01-25 16:11 被阅读60次
    首先认识一下web开发框架

    什么是web开发?, Web开发指的是开发基于B/S架构,通过前后端的配合,将后台服务器的数据在浏览器上展现给前台用户的应用。比如将电子购物网站的商品数据在浏览器上展示给客户,在基于浏览器的学校系统管理平台上管理学生的数据,监控机房服务器的状态并将结果以图形化的形式展现出来等等。

    所以就有了如下代码:

    import pymysql
    
    print("Content-Type: text/html\n")
    print("<html><head><title>products</title></head>")
    print("<body>")
    print("<h1>products</h1>")
    print("<ul>")
    
    connection = pymysql.connect(user='user', passwd='pwd', db='product_db')
    cursor = connection.cursor()
    cursor.execute("SELECT name FROM products ORDER BY create_date DESC LIMIT 10")
    
    for row in cursor.fetchall():
        print("<li>%s</li>" % row[0])
    
    print("</ul>")
    print("</body></html>")
    
    connection.close()
    

    以上是使用CGI标准开发的一个web应用。

    我们可以看到, 首先就是打印一下html标记, 然后构造SQL查询语句对数据库进行查询,之后把打印结果插入到原有的网页中。

    首先,这个过程看上去很简单,但是功能太特定化了,只能针对某一中特定的请求进行响应。

    1. 如果应用中有多处需要连接数据库会怎样呢?每个独立的CGI脚本,不应该重复编写数据库连接相关的代码。
    2. 前端、后端工程师以及数据库管理员集于一身,无法分工配合。设想一个前端设计师,完全没有Python开发经验,但是又需要编写SQL语句的话,会发生什么呢?(我有一句话不知当讲不当讲?)
    3. 如果代码被重用到一个复合的环境中会发生什么?
    4. 直接将数据库的密码写在代码里吗?
    5. 今天是取十个商品,明天我要删除十个商品怎么办?

    于是人们发现,以下过程是可以不断地重复的。

    开始编写一个新的Web应用
    开始编写另一个Web应用
    从第一步中总结经验(找出其中通用的代码),并运用在第二步中
    重构代码使得能在第二个应用中使用第一个程序中的通用代码
    重复2-4步若干次
    发明了一个Web框架。

    于是一个web框架就诞生了。


    web框架

    Django框架

    而我所要学习的Django框架,就是其中之一,
    Django基于MVC模型, 也就是model, view , 和controller

    利用Django进行开发

    1. 新建项目
      $ django-admin startproject mysite

    这时候就新建了一个项目,但是注意的时候项目的名字尽量不要取一些特殊意义的名词

    一个新建立的项目大致如下:

    mysite/
        manage.py
        mysite/
            __init__.py
            settings.py
            urls.py
            wsgi.py
    

    manage.py是一个和命令行工具进行交互的脚本,启动Django就需要它
    其他的内容以后会提到。

    1. 启动开发服务器
      $ python manage.py runserver
      这时候一个本地的服务器就搭建起来了
      如果需要修改运行的端口或者ip地址,可以采取如下方式
      $ python manage.py runserver 0.0.0.0:8000
    1. 创建应用app

    一个app实现某个功能,比如博客
    一个project包含多个app,这些app组合成整个站点
    一个app可以属于多个project!

    进入目录下之后,运行如下命令可以生成一个app
    $ python manage.py startapp polls
    系统会自动生成一个app

    目录结构如下:

    polls/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py
    
    1. 编写第一个视图
      polls/views.py文件中, 编写如下代码:
    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("Hello, world. You're at the polls index.")
    

    第一步先导入相关的包,然后定义一个index函数,从名字上来看就是你网站的主页, 返回一个http的response(从名字上看得出来)

    为了调用这个视图, 我们还需要编写路由,也就是urlconf
    在polls里面新建一个文件,名字叫urls.py
    输入如下代码:

    from django.conf.urls import url
    from . import views
    
    urlpatterns = [
        url(r'^$', views.index, name='index'),
    ]
    

    .代表当前目录,也就是从当面目录下导入views.py文件
    urlpatterns 其实就是用一个正则表达式,去匹配浏览器导航框里面的字符

    此时的目录结构如下:

    polls/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        urls.py
        views.py
    

    接下来,在项目的主urls文件中,添加urlpattern条目,指向我们刚刚建立的polls这个app独有的urls文件, 这里需要导入include模块。
    打开mysite/urls.py文件,添加如下代码:

    from django.conf.urls import include, url
    from django.contrib import admin
    
    urlpatterns = [
        url(r'^polls/', include('polls.urls')),
        url(r'^admin/', admin.site.urls),
    ]
    

    include 语法相当于多级路由,把接收到的url地址去除前面的正则表达式,将剩下的字符串传递给下一级路由进行判断。

    相关文章

      网友评论

          本文标题:初识Django

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