django 项目实战-基础项目


django 项目实战-基础项目

我们首先来创建一个django基础项目,来熟悉django项目的开发流程,内容如下:

  • 创建django项目
  • 创建django应用
  • 创建模型
  • 创建视图
  • 配置url
  • 创建超级用户

创建django项目

创建django项目比较简单,在命令行使用如下命令:

django-admin startproject mysite

项目结构如下:

django项目结构

这些文件的含义:

  • 外部mysite/根目录只是项目的容器。它的名字对Django来说无关紧要; 你可以将它重命名为你喜欢的任何东西。
  • manage.py:一个命令行实用程序,允许您以各种方式与此Django项目进行交互。您可以manage.py在django-admin和manage.py中阅读有关的所有详细信息 。
  • 内部mysite/目录是项目的实际Python包。它的名称是您需要用来导入其中任何内容的Python包名称(例如mysite.urls)。
  • mysite/init.py:一个空文件,告诉Python该目录应该被视为Python包。如果您是Python初学者,请阅读官方Python文档中有关包的更多信息。
  • mysite/settings.py:此Django项目的设置/配置。 Django设置将告诉您有关设置如何工作的所有信息。
  • mysite/urls.py:这个Django项目的URL声明; 您的Django支持的站点的“目录”。您可以在URL调度程序中阅读有关URL的更多信息。
  • mysite/wsgi.py:与WSGI兼容的Web服务器的入口点,用于为您的项目提供服务。有关更多详细信息,请参阅如何使用WSGI进行部署。

创建django应用

我们将目录定位到外层mysite目录下面,使用如下命令创建一个django应用:

python manage.py startapp myapp

应用结构如下:

django应用结构

应用文件的含义如下:

  • myapp/migrations: 会在这里生产迁移文件,根据这些文件生成和修改数据库表。
  • __init__.py : 一个空文件,告诉Python该目录应该被视为Python包。
  • admin.py : 在这个文件中注册模型,会在admin后台自动维护这些模型。
  • apps.py : 应用配置,指定应用名称。
  • models.py : 在这里定义数据模型.
  • tests.py : 单元测试。
  • views: 视图文件,在该文件中定义视图。

创建django模型

我们在models.py文件中定义模型,每个模型由一个子类表示django.db.models.Model。每个模型都有许多类变量,每个变量代表模型中的数据库字段。这里我们创建一个实现一个任务计划(ToDoList)

from django.db import models

class Task(models.Model):
    content = models.CharField(max_length=200)

创建好的模型,我们必须激活它,我们在settings.py配置文件中配置它。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp'
]

配置django后端数据库

django默认使用本地sqlite数据库,这在实际项目中是不够用的,我们这里使用mysql数据库。在settings.py文件中配置。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'MyDB',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': '3308',
    }
}

这些参数分别是数据库引擎,数据库名称,用户名,密码,ip地址,端口号(注意:这里我使用的是3308,默认3306)。

生成django数据迁移文件

python manage.py makemigrations myapp

根据这条命令会在migrations目录下面,生成数据迁移文件。注意:只要模型有变化想同步到数据库,我们必须执行先这个命令。

from django.db import migrations, models

class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Task',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('content', models.CharField(max_length=200)),
            ],
        ),
    ]

生成django数据库表

python manage.py migrate

这个命令会根据上面的迁移文件,在数据库中创建表,或者更新表。执行完这条命令后,你会看到数据库中,生成如下几个表。

django生成数据库表

你会看到会有好几个表,除了myapp_task,其他几个表都是系统应用自动生成的。也就是:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp'
]

创建django超级管理员用户

使用下面命令来创建超级管理员用户:

python manage.py createsuperuser

输入用户名、密码、邮箱就可以创建好一个管理员用户了。

启动django本地服务器

django自动了一个本地wsgi服务器,我们可以通过下面命令来启动它。

python manage.py runserver

默认端口是8000,我们可以打开浏览器访问网站。

Performing system checks...

System check identified no issues (0 silenced).
December 05, 2018 - 12:18:21
Django version 2.1.3, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

进入django管理后台

我们输入:http://127.0.0.1:8000/admin 就可以进入系统后台,输入我们刚才创建的超级用户就可以进入系统后台。这里有用户和用户组的管理。

django管理后台

这个url地址从哪里来的呢?我们会在urls.py文件中看到如下配置:

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]

修改为中文

打开settings.py配置文件,将LANGUAGE_CODE项修改为中文,刷新页面你会看到,变成了中文。

LANGUAGE_CODE = 'zh-Hans'

注册django模型

为了在后台管理Task模型,实现添加、删除、修改等功能,我们需要注册该模型,在admin.py文件中注册如下:

from django.contrib import admin

from .models import Task

admin.site.register(Task)

这样我们在admin后台就可以维护Task模型了。

创建django视图

在view.py文件中添加如下内容:

from django.http import HttpResponse

def index(request):
    return HttpResponse('django 视图')

配置url

在myapp模块中创建一个urls.py文件,内容如下:

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

在mysite模块的urls.py文件中包含上述urls.py:

from django.contrib import admin
from django.urls import path, include
from myapp import urls

urlpatterns = [
    path('task/', include('myapp.urls')),
    path('admin/', admin.site.urls),
]

在浏览器中输入:http://127.0.0.1:8000/task/ 你会看到如下输出:

django 视图

配置django模板

在myapp模块下面创建一个templates目录,下面创建一个index.html文件,内如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>

  <ul>
  {%for task in task_list%}
    <li>{{task.content}}</li>
  {%endfor%}
  </ul>

</body>
</html>

修改视图

from django.shortcuts import render
from .models import Task
def index(request):
    task_list = Task.objects.all()
    ctx = {
        'task_list': task_list
    }
    return render(request,'index.html',ctx)

在浏览器中输入:http://127.0.0.1:8000/task/ 你会看到如下输出,(注意这里,我们admin后台已经添加了如下数据)

- 写博客
- 录制课程
- 教育孩子
- 照顾老人

源码下载

源码下载

更多Django教程

学习更多Django教程