zoukankan      html  css  js  c++  java
  • Django:学习笔记(2)——创建第一个应用

    Django:学习笔记(2)——创建第一个应用

    创建应用

      在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定。Django 自带一个工具,可以帮你生成应用的基础目录结构,这样你就能专心写代码,而不是创建目录了。

      我们可以执行如下命令,来创建myweb应用。

    python manager.py startapp myweb

      执行结束后,python为我们的项目创建好了一个遵循约定的目录结构

      

    注意:我们做一个区分,我们使用django-admin startproject创建后生成的目录为项目目录,应用目录是创建在项目目录内的,项目目录内同时包含了一个和项目同名的目录,我们叫项目源目录,后文不在赘述。

    创建第一个视图

      我们在目录中的views.py文件里,写入第一个视图,Hello World

    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("Hello World!")
    

      视图有了,我们还需要一个URL来映射到它,我们需要在该目录下创建一个urls.py文件

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

      下一步是要在根 URLconf 文件中指定我们创建的 myweb.urls 模块。在项目源目录urls.py 文件的 urlpatterns 列表里插入一个 include(), 如下:

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

      现在我们已经可以通过访问/web路径,得到hello,world结果,效果如下图:

      

    创建第一个模型

      在 Django 里写一个数据库驱动的 Web 应用的第一步是定义模型 - 也就是数据库结构设计。

    说明:

      模型是真实数据的简单明确的描述。它包含了储存的数据所必要的字段和行为。Django 遵循 DRY Principle 。它的目标是你只需要定义数据模型,然后其它的杂七杂八代码你都不用关心,它们会自动从模型生成

      我们现在做一个用户登录的例子,首先我们需要定义用户信息模型。

    # 定义一个用户信息
    class User(models.Model):
        username = models.CharField(max_length=16)
        password = models.CharField(max_length=16)
        gender = models.CharField()
        mail = models.EmailField()

      代码非常直白。模型被表示为 django.db.models.Model 类的子类。每个模型有一些类变量,它们都表示模型里的一个数据库字段

      每个字段都是 Field 类的实例 - 比如,字符字段被表示为 CharField ,日期时间字段被表示为 DateTimeField 。这将告诉 Django 每个字段要处理的数据类型。每个 Field 类实例变量的名字也是字段名,所以最好使用对机器友好的格式。你将会在 Python 代码里使用它们,而数据库会将它们作为列名。

    注意:我们可以使用 ForeignKey 定义了一个关系。这将告诉 Django,每个 Choice 对象都关联到一个 Question 对象。Django 支持所有常用的数据库关系:多对一、多对多和一对一,我们将在后面文章补充这部分内容

    激活模型

      上面我们创建一个用户模型,它给了 Django 很多信息,通过这些信息,Django 可以为这个应用创建数据库表结构(生成 CREATE TABLE 语句),同时创建可以与User对象进行交互的 Python 数据库 API。但在这之前,我们需要做一些操作。

    把应用安装到项目

      但是首先得把myweb 应用安装到我们的项目里。为了在我们的工程中包含这个应用,我们需要在项目源目录的setting.py中的 INSTALLED_APPS 中添加设置。因为 MyWebConfig 类写在文件 myweb/apps.py 中,所以它的点式路径是 'myweb.apps.MyWebConfig'。如下图所示:

    将模型同步到数据库

      我们的模型创建好了以后,我们需要执行一些方法,告知django将我们写好的user模型同步到数据库中,即创建相应的表结构。

      我们需要执行一次数据迁移,通过运行 makemigrations 命令,Django 会检测你对模型文件的修改(在这种情况下,你已经取得了新的),并且把修改的部分储存为一次 迁移,这一点很像Git,但是记住它只是记录一下你的修改操作而已。

    django会在我们应用的migrations下创建迁移文件。

    接着,我们再运行migrate命令,在数据库里创建新定义的模型的数据表。

    python manage.py migrate
    

     说明:我们也可以通过迁移文件,来查看会执行哪些SQL命令。

     python manage.py sqlmigrate myweb 0001
    

      总之,我们在修改模型后,需要执行两步操作来将新的模型同步到数据库中。

      

    实践:实现用户注册

      首先,我们还是要回顾一下这篇文章的内容,我们知道了如何创建一个视图以及设置URL映射、如何创建一个模型并且同步到数据库中,现在我们来实践一下实现用户注册。

      在视图的处理中,我们可以做任何事情,并且返回任何我们需要反馈的信息。首先在想要获取到用户的请求信息,它们都被保存在request.GET和request.POST这两个字典中。

    [文件:myweb/views.py]
    def addUser(request):
        # 创建用户对象
        user = User()
        # 获取请求数据
        user.username = request.GET['username'];
        user.password = request.GET['password'];
        # 保存
        user.save();
        return HttpResponse('<p>用户添加成功</p>');
    

      接着,我们在应用的urls.py中添加URL映射关系

    [文件:myweb/urls.py]
    urlpatterns = [
        url("add",views.addUser)
    ]
    

      按照GET方式,我们在访问时,需要在URL中拼接请求信息,如下

      

      至此,我们的第一个实践内容结束,我们完成了一个获取用户请求信息,并调用模型内置方法将数据保存到数据库

  • 相关阅读:
    HTML5-拖拽
    POJ1182食物链(并查集)
    欧拉函数之HDU1286找新朋友
    Another kind of Fibonacce(矩阵快速幂,HDU3306)
    我的第一道java_A+B
    bestcoder#33 1002 快速幂取余+模拟乘,组合数学
    快速幂模版
    bestcoder#33 1001 高精度模拟
    poj2446_二分图
    poj3984_bfs+回溯路径
  • 原文地址:https://www.cnblogs.com/MrSaver/p/10374584.html
Copyright © 2011-2022 走看看