Django的开发步骤原来是这样的

当我们开始使用Django进行Web开发时,我们通常需要遵循以下步骤:

1.规划项目结构

在开始编写代码之前,我们需要认真考虑我们将要实现的功能和我们的项目结构。Django是一个MVC框架,它鼓励我们将不同的应用程序放在不同的应用程序(APP)目录中,并将每个应用程序分解为模型(Models),视图(Views)和控制器(Controller)(URLconf)。这使得项目更加可维护和可重用。例如,一个基本的Django项目结构如下所示:

myproject/
    manage.py
    myproject/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    myapp/
        __init__.py
        models.py
        views.py
        urls.py
        templates/
            myapp/
                index.html

2.创建Django项目

一旦我们已经规划好了我们的项目结构,我们现在可以创建我们的Django项目。

使用以下命令创建Django项目:

django-admin startproject projectname

3.创建Django应用程序

我们现在需要创建一个应用程序(APP)来实现我们的项目的一些功能。要创建一个应用程序,请使用以下命令:

python manage.py startapp appname

创建后,我们需要将应用程序名称添加到project/settings.py文件的INSTALLED_APPS顶部的列表中。

4.创建模型

模型(Models)是Django的核心组件之一,并用于定义应用程序中的数据结构。在我们的应用程序中创建模型是实现全功能Web应用程序的重要一步。

例如,在我们的应用程序中,我们创建一个名为“Book”的类来表示书籍对象。这可以通过在appname/models.py中创建以下代码块来完成:

from django.db import models


class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=200)
    pub_date = models.DateField()

    def __str__(self):
        return self.title

这将创建一个名为Book的类,并将其保存到appname/models.py文件中。我们还定义了Book的属性:Title,Author和Pub_date。

5.创建视图

视图(Views)是Django应用程序中的另一个核心组件,并用于呈现应用程序的动态内容。在我们的应用程序中创建视图是实现Web应用程序的关键步骤之一。

例如,我们可以在appname/views.py文件中创建以下视图:

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the book index page.")

这将创建一个名为“index”视图,并在其中定义所有请求的行为。在这种情况下,我们只是在网页上显示“Hello, world. You're at the book index page.”消息。

6.创建URLconf

我们需要将我们的应用程序与URLs相关联,以确保在浏览器中输入正确URL时使用正确的视图。URLconf是urlhelpers.py文件,其包含我们的应用程序的URL和相应的视图。

例如,我们在appname/urlhelpers.py文件中添加以下代码:

from django.urls import path
from . import views

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

这将通过创建一个与我们定义的视图函数匹配的URL模式来将视图与URL关联起来,并将其命名为“index”。

7.运行并测试应用程序

我们现在可以在本地运行我们的应用程序以测试它。使用以下命令启动Django服务器:

python manage.py runserver

在此之后,我们可以在本地计算机上打开浏览器并输入以下地址进行测试:

http://127.0.0.1:8000/

这将显示我们在视图中定义的消息。

以上是Django的典型开发过程,具体实现取决于你想实现的功能及具体需求。下面通过两个示例说明:

示例1:创建一个用户注册表单

1.首先,在app目录下的templates目录中创建一个名为register.html的文件。

2.在register.html中添加以下代码:

{% block content %}
    <h2>Register</h2>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Register</button>
    </form>
{% endblock %}

3.在app目录下,创建一个views.py文件

4.在views.py文件中添加以下代码块:

from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm


def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('home')
    else:
        form = UserCreationForm()
    return render(request, 'register.html', {'form': form})

5.在应用程序目录中的urlhelpers.py文件中添加以下代码块:

from django.urls import path
from . import views

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

现在,我们可以建立一个完整的用户注册系统。

示例2:添加一个名为“ratings”的等级模型

1.在我们的应用程序目录中的models.py文件中,添加以下模型定义:

from django.db import models
from django.contrib.auth.models import User


class Rating(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    book = models.ForeignKey(Book, on_delete=models.CASCADE)
    rating = models.IntegerField(default=0)

    def __str__(self):
        return "Rating for book %s by user %s" % (self.book, self.user)

2.在app目录的views.py文件中添加以下代码块:

from django.shortcuts import render
from .models import Book, Rating


def book_detail(request, id):
    book = Book.objects.get(pk=id)
    ratings = Rating.objects.filter(book=book)
    context = {
        'book': book,
        'ratings': ratings,
    }
    return render(request, 'book_detail.html', context)

3.在app目录中的templates目录中创建一个名为book_detail.html的文件,添加以下代码块:

<h2>{{ book.title }}</h2>

<p>{{ book.author }}</p>

<h3>Ratings</h3>

{% if ratings.count > 0 %}
<ul>
    {% for rating in ratings %}
    <li>{{ rating.user.username }} rated this book a {{ rating.rating }}</li>
    {% endfor %}
</ul>
{% else %}
<p>No ratings available.</p>
{% endif %}

4.在应用程序目录中的urlhelpers.py文件中,为book_detail视图添加URL模式:

from django.urls import path
from . import views

urlpatterns = [
    path('book/<int:id>/', views.book_detail, name='book_detail'),
]

现在,我们可以添加一个使用Rating模型的网页,以便用户可以对书籍进行评级。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django的开发步骤原来是这样的 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • Django密码存储策略分析

    下面是关于Django密码存储策略的分析和示例说明。 分析Django密码存储策略 Django的密码存储策略分为两个部分:密码哈希函数和密码哈希率。 密码哈希函数 Django默认使用PBKDF2算法来为每个密码生成哈希值。PBKDF2是一种可伸缩的哈希算法,它基于密钥、盐和迭代次数来生成哈希值。密钥是原始密码,盐是一个随机数,迭代次数可配置。PBKDF2…

    Django 2023年5月16日
    00
  • Django之url定义和ORM框架的使用

    前言,Django安装 pip install django # 官网安装最新版本 pip install django -i “https://pypi.doubanio.com/simple/” # 指定安装源 pip install django –upgrate # 更新Django pip uninstall django # 卸载django …

    Django 2023年4月11日
    00
  • Django模板变量使用方式详解

    Django是一款功能强大的Python Web框架,它的模板变量是模板中最为重要和灵活的元素之一。 模板变量是一些用于在模板中呈现动态数据的Python表达式。在Django模板中,模板变量可以代表任何数据类型,例如数字、字符串、变量、对象、列表、元组和字典等。 Django模板变量的语法很简单,使用双花括号{{}}将变量包裹。当模板引擎运行时,它会将双花…

    Django 2023年3月12日
    00
  • 将django项目部署到centos的踩坑实战

    下面是将Django项目部署到CentOS的踩坑实战攻略,具体步骤如下: 准备工作 准备一台CentOS服务器,安装好Python环境和Django框架 安装和配置Nginx和uWSGI,设置Nginx代理 开始部署 示例一:直接使用uWSGI部署Django项目 在服务器上新建项目目录,例如:/root/myproject/ 在myproject目录下,创…

    Django 2023年5月16日
    00
  • Django缓存优化之redis

         Redis 概述   Redis 是一个开源的Inmemory key-value 存储系统,性能高,很大程度上补偿了 memcached 的不足。支持多种存储类型,包括 string, list, set, zset(sorted set — 有序集合)和 hash。   Redis 优点   1)异常快速:Redis的速度非常快,每秒能执行约…

    Django 2023年4月11日
    00
  • django下创建多个app,如何设置每个app的urls

    1.创建第二个app   假设我们项目P下面已经有了一个默认的app,名字是app1。现在我想创建第二个app,名字时app2。   进入pychram下的Terminal中,运行命令: python manage.py startapp app2   此外,我在每个app下都建立一个urls.py,方便区分。   右击app名,new一个Python Fi…

    Django 2023年4月11日
    00
  • Django框架:13、csrf跨站请求伪造、auth认证模块及相关用法

    Django框架 目录 Django框架 一、csrf跨站请求伪造 1、简介 2、csrf校验策略 form表单csrf策略 ajax请求csrf策略 3、csrf相关装饰器 FBV添加装饰器方式 CBV添加装饰器方式 二、auth认证模块 1、简介 2、auth认证相关模块及操作 auth 模块 User 模块 login_required 模块 3、拓展…

    2023年4月10日
    00
  • Django使用celery异步发邮件

    Celery是Python开发的分布式任务调度模块,包含以下组件: Celery Beat: 任务调度器,自带的 Celery Worker: 执行任务的消费者,通常设置多个 Broker: 消息代理,就是任务队列,我们使用redis Producer: 任务生产者,要执行的函数加上@app.task Result Backend: 结果保存,还是redis…

    Django 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部