zoukankan      html  css  js  c++  java
  • django+sqlite3进行web开发(一)

    服务器配置

    安装django

    sudo apt-get install python-django -y
    

    安装mysql(可选)

    也可以直接使用sqlite

    sudo apt-get install mysql-server-5.6
    sudo apt-get install mysql-client-5.6
    
    sudo apt-get install python-mysqldb  
    

    测试项目Hello World

    在我们的项目根目录下执行:

    django-admin startproject HelloWorld
    

    HelloWorld即是我们的项目名称。截图后的目录结构:

    xl@xl-Z270-HD3:~/file/code/HelloWorld$ tree
    .
    └── HelloWorld
        ├── HelloWorld
        │   ├── __init__.py
        │   ├── settings.py
        │   ├── urls.py
        │   └── wsgi.py
        └── manage.py
    
    2 directories, 5 files
    
    

    各个文件的作用:

    • HelloWorld: 项目的容器
    • manage.py: 命令行工具,用于和Django交互
    • HelloWorld/init.py:空文件,告诉python,该目录是一个Python包
    • HelloWorld/settings.py : 对该项目的配置文件
    • HelloWorld/urls.py : 该项目的url声明
    • HelloWorld/wsgi.py : 服务器入口

    然后,运行服务器:

    python manage.py runserver
    

    当服务器运行成功后,就可以访问http://127.0.0.1:8000查看'Welcome to Diango'界面。

    添加自己的app

    一个Django project下可以有多个App,而一个App就是一个具体的Web应用程序,用来实现具体的功能和完成具体的事项。
    可以通过manage.py快速创建一个app:

    python manage.py startapp testapp
    

    这样就创建了一个名为testapp的Django App,看看当前目录的变化,在project根目录下会多出一个testapp的目录,其目录结是:

    xl@xl-Z270-HD3:~/file/code/HelloWorld/HelloWorld/testapp$ tree
    .
    ├── admin.py
    ├── apps.py
    ├── __init__.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py
    
    1 directory, 7 files
    
    

    其中:

    • admin.py:用于设置 Django 自带的强大管理后台;
    • apps.py:声明了这个的 App 信息;
    • models.py:用于定义数据模型(数据库表);
    • tests.py:用于单元测试;
    • views.py:用于定义 App 的视图,也就是业务函数。

    这包含了一个 Web 应用的后台管理、数据库定义、逻辑视图,在结合项目的路由映射,就是一个 Django App 最基本的结构。

    migrations 文件夹目前是一个空的文件夹,其中会记录应用的数据模型迁移的情况。

    然后我们需要使用manage.py文件的migrate 和 makemigrations 命令,创建一些默认的数据库表:

    python manage.py migrate
    

    运行命令,会显示将会对数据库进行很多个表的实例化和迁移.
    然后,我们将testapp添加到HelloWorld项目的App列表中,即在settings.py文件中找到INSTALLED_APPS,将testapp加到最后面。
    接着,可以使用 makemigrations 命令来检测项目中数据模型的数据迁移变化:

    python manage.py makemigrations testapp
    

    创建超级用户

    我们可以为项目创建一个超级管理员,通过这个账户,可以快速使用 Django 强大的后台功能,对数据模型进行管理:

    python manage.py createsuperuser
    

    根据提示输入用户名、邮箱和密码,一个超级用户就创建好了。我们可以运行项目,访问http://127.0.0.1:8000/admin路径看看:

    python manage.py runserver
    

    可以使用刚刚创建的管理员账户登录。

    修改我们的网页

    修改视图文件

    编辑testapp目录下views.py,加入以下内容:

    from django.http import HttpResponse
    
    def hello(request):
        return HttpResponse("Hello world!")
    

    在这里,我们定义了一个hello视图。
    注意, 一个视图就是Python的一个函数。这个函数第一个参数的类型是HttpRequest;它返回一个HttpResponse实例。为了使一个Python的函数成为一个Django可识别的视图,它必须满足这两个条件。

    进行URL配置

    为了告诉服务器我们配置的视图,需要进行URL配置。在HelloWorld目录下的urls.py中添加:

    from testapp.views import hello
    
    urlpatterns = [
        ...
        url(r'^hello/$', hello),
    ]
    

    这时,我们再重新启动服务器,访问 http://127.0.0.1:8000/hello/,就可以看到不一样的结果了。

    编写一个动态网页

    上面的例子每次返回的都是一样的内容,它可以算是一个静态网页。但其实使用python每次返回不同的内容,就可以算是动态网页了。

    我们把views.py中的添加一个视图:

    import time
    
    def current_time(request):
        return HttpResponse("Current time is: "+time.strftime('%Y-%m-%d %H:%M:%S'))
    

    同样在urls.py中配置URL:

    from testapp.views import current_time
    
    urlpatterns = [
        ......
        url(r'^current_time/$', current_time),
    ]
    

    这时,我们再重新启动服务器,访问 http://127.0.0.1:8000/current_time/,就可以看到每次都不一样的网页了。

    数据库

    与数据库相关的代码一般写在models.py中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要在settings.py中配置即可,不用更改models.py中的代码。

    创建数据表

    我们打开 testapp/models.py 文件,修改其中的代码如下:

    from django.db import models
     
     
    class Test(models.Model):
        a = models.CharField(max_length=30)
        b = models.IntegerField()
    

    然后,同步一下数据库。(默认使用sqlite3数据库,无需做任何配置)

    先进入到manager.py所在的文件夹下,输入以下命令:

    # Django 1.6.x 及以下
    python manage.py syncdb
     
    # Django 1.7 及以上的版本需要用以下命令
    python manage.py makemigrations
    python manage.py migrate
    

    Django生成了一系列的表,也包括我们在testapp/models.py中定义的testapp_test这个表。

    插入和查询数据

    作为测试,我们可以调起Django的shell:

    xl@xl-Z270-HD3:~/file/code/HelloWorld/HelloWorld$ python manage.py shell
    Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15) 
    [GCC 7.3.0] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    (InteractiveConsole)
    >>> from testapp.models import Test
    >>> Test.objects.create(a="zhangsan", b=24)
    <Test: Test object>
    >>> Test.objects.get(a="zhangsan")
    <Test: Test object>
    >>> 
    

    注意这里使用.objects.get() 方法查询出来的对象都是显示一个结构体。
    具体操作可以参考https://code.ziqiangxuetang.com/django/django-models.html

  • 相关阅读:
    Codeforces Round #447 Div. 2 A.B.C
    Codeforces Round #445 Div. 2 A ACM ICPC+B Vlad and Cafes
    51Nod 1035 最长的循环节 数论
    Codeforces Round #444 (Div. 2) C.Solution for Cube 模拟
    POJ 3111 K Best
    POJ 2976 Dropping tests
    POJ 3045 Cow Acrobats
    POJ 3045 Cow Acrobats
    POJ 3273
    POJ 3258 River Hopscotch
  • 原文地址:https://www.cnblogs.com/xl2432/p/10494971.html
Copyright © 2011-2022 走看看