10 创建Django应用

10 创建Django应用

环境准备

在开始之前,确保你已经安装了 Pythonpip。然后安装 Django

1
pip install django

创建项目

首先,我们需要创建一个新的 Django 项目。使用以下命令创建一个名为 myproject 的项目:

1
django-admin startproject myproject

这个命令会创建一个包含初始文件的项目目录结构:

1
2
3
4
5
6
7
myproject/
manage.py
myproject/
__init__.py
settings.py
urls.py
wsgi.py

创建应用

在 Django 中,应用是一个可以独立完成某个功能的模块。我们可以使用以下命令创建一个名为 myapp 的应用:

1
2
cd myproject
python manage.py startapp myapp

这将会在 myproject 目录下创建一个 myapp 文件夹,包含以下结构:

1
2
3
4
5
6
7
8
9
myapp/
migrations/
__init__.py
__init__.py
admin.py
apps.py
models.py
tests.py
views.py

配置项目

为了让 Django 知道你的应用,打开 myproject/settings.py 文件,并在 INSTALLED_APPS 列表中添加 myapp

1
2
3
4
INSTALLED_APPS = [
...
'myapp',
]

创建模型

myapp/models.py 文件中,我们定义一个简单的模型,比如一个 Post 模型,用于博客文章:

1
2
3
4
5
6
7
8
9
from django.db import models

class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)

def __str__(self):
return self.title

迁移数据库

创建模型后,需要将其迁移到数据库中。首先生成迁移文件:

1
python manage.py makemigrations myapp

然后应用迁移:

1
python manage.py migrate

创建视图

myapp/views.py 中创建一个简单的视图显示所有文章:

1
2
3
4
5
6
from django.shortcuts import render
from .models import Post

def post_list(request):
posts = Post.objects.all()
return render(request, 'myapp/post_list.html', {'posts': posts})

创建模板

myapp 目录下创建一个名为 templates/myapp/ 的文件夹,并在其中创建 post_list.html 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
<head>
<title>Blog Posts</title>
</head>
<body>
<h1>Blog Posts</h1>
<ul>
{% for post in posts %}
<li>{{ post.title }} - {{ post.created_at }}</li>
{% endfor %}
</ul>
</body>
</html>

配置 URL

myapp 目录中创建一个名为 urls.py 的文件,并添加以下内容:

1
2
3
4
5
6
from django.urls import path
from .views import post_list

urlpatterns = [
path('', post_list, name='post_list'),
]

接下来,在 myproject/urls.py 中包含 myapp 的 URL:

1
2
3
4
5
6
7
from django.contrib import admin
from django.urls import include, path

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

启动开发服务器

最后,运行以下命令启动 Django 的开发服务器:

1
python manage.py runserver

打开浏览器,访问 http://127.0.0.1:8000/,你应该可以看到显示文章标题和创建日期的页面。

总结

至此,你已经成功创建了一个简单的 Django 应用,包括模型、视图、模板和 URL 配置。接下来可以尝试添加更多功能,比如后台管理、表单处理等。继续探索 Django 的强大功能吧!

11 Django 应用与项目的关系

11 Django 应用与项目的关系

在 Django 中,理解应用项目之间的关系是学习和使用 Django 的关键一步。接下来,我们将详细探讨这两者的定义、目的和实例。

应用与项目的定义

  • 项目:一个 Django 项目是一个包含所有 Django 应用的容器。它可以看作是一个网站的整体,包括设置、配置以及管理多个应用。
  • 应用:应用是包括特定功能的小模块,设计为可以在多个项目中重用。一个应用可以是一个blog、一个用户认证系统,或是一个产品管理系统等。

项目的结构

当你使用 django-admin startproject myproject 创建一个新项目时,Django 会生成一个目录结构大概如下:

1
2
3
4
5
6
7
8
myproject/
manage.py
myproject/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py

这里的 myproject 是项目的根目录,里面的 settings.py 包含项目全局配置。

应用的创建

你可以通过以下命令来创建一个新的应用:

1
python manage.py startapp myapp

这个命令将在项目目录下创建一个 myapp 目录,结构如下:

1
2
3
4
5
6
7
8
9
myapp/
migrations/
__init__.py
__init__.py
admin.py
apps.py
models.py
tests.py
views.py

应用与项目的关系

settings.py 文件中,你需要将你的应用添加到 INSTALLED_APPS 列表中,以便 Django 可以识别和使用它。例如:

1
2
3
4
5
6
7
8
9
10
11
# myproject/settings.py

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', # 添加我们新创建的应用
]

实例分析

假设我们要为我们的项目创建一个简单的博客应用。以下是如何将应用与项目关联的步骤:

创建应用

运行命令:

1
python manage.py startapp blog

定义模型

blog/models.py 文件中定义文章模型:

1
2
3
4
5
6
7
8
9
10
11
# blog/models.py

from django.db import models

class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)

def __str__(self):
return self.title

注册到项目

blog 应用添加到 INSTALLED_APPS 中:

1
2
3
4
5
6
# myproject/settings.py

INSTALLED_APPS = [
# ... other apps ...
'blog', # 注册我们的博客应用
]

迁移数据库

为了使数据库包含新的表结构,需要运行迁移命令:

1
2
python manage.py makemigrations blog
python manage.py migrate

创建视图

blog/views.py 中创建一个简单的视图来展示文章列表:

1
2
3
4
5
6
7
8
# blog/views.py

from django.shortcuts import render
from .models import Post

def post_list(request):
posts = Post.objects.all()
return render(request, 'blog/post_list.html', {'posts': posts})

配置 URL

在项目的 urls.py 中配置我们的博客应用的 URL:

1
2
3
4
5
6
7
8
9
10
# myproject/urls.py

from django.contrib import admin
from django.urls import path
from blog.views import post_list

urlpatterns = [
path('admin/', admin.site.urls),
path('posts/', post_list, name='post_list'), # 映射到我们的视图
]

创建模板

blog/templates/blog/ 目录下创建 post_list.html 模板文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!-- blog/templates/blog/post_list.html -->

<!DOCTYPE html>
<html>
<head>
<title>Blog Posts</title>
</head>
<body>
<h1>Blog Posts</h1>
<ul>
{% for post in posts %}
<li>{{ post.title }} - {{ post.created_at }}</li>
{% endfor %}
</ul>
</body>
</html>

总结

通过以上的步骤,我们成功地创建了一个博客应用并将其整合入项目。每个应用都可以专注于特定的功能,而项目则管理多个应用的配置与协调。

掌握应用与项目之间的关系,不仅能帮助你更好地组织代码,还能提高开发效率,使项目结构更加清晰可维护。

12 Django模型快速入门

12 Django模型快速入门

在Django中,模型是用于描述数据结构的核心组件。通过定义模型,你可以轻松地与数据库进行交互。本文将带你从零开始创建自己的模型,并通过实例加深理解。

创建Django项目与应用

首先,确保你已经安装了Django。如果没有安装,可以使用以下命令:

1
pip install django

接下来,创建一个新的Django项目和应用:

1
2
3
django-admin startproject myproject
cd myproject
django-admin startapp myapp

myproject/settings.py中,添加你的应用到安装的应用列表:

1
2
3
4
INSTALLED_APPS = [
# ...
'myapp',
]

定义模型

myapp/models.py文件中,我们将创建一个简单的模型。假设我们要为一个博客应用定义一篇文章的模型。

1
2
3
4
5
6
7
8
9
from django.db import models

class Article(models.Model):
title = models.CharField(max_length=100) # 标题
content = models.TextField() # 内容
created_at = models.DateTimeField(auto_now_add=True) # 创建时间

def __str__(self):
return self.title

解释模型字段

  • models.Model: 所有模型都需要继承自models.Model
  • CharField: 用于存储字符短字符串,例如文章的标题。
  • TextField: 用于存储较长的文本内容。
  • DateTimeField: 用于存储日期和时间,auto_now_add=True表示在创建对象时自动设置当前时间。
  • __str__方法: 定义对象的字符串表示,方便在Django管理后台查看。

迁移模型到数据库

在定义好模型后,我们需要将其迁移到数据库。一开始,你需要运行以下命令来生成迁移文件:

1
python manage.py makemigrations

接着,应用迁移到数据库中:

1
python manage.py migrate

创建模型实例

现在,我们可以在Django的shell中创建和操作模型实例。先进入Django的交互式shell:

1
python manage.py shell

然后,使用以下代码创建一篇文章:

1
2
3
4
5
from myapp.models import Article

# 创建一篇新文章
article = Article(title="我的第一篇文章", content="这是一些内容示例。")
article.save() # 保存到数据库

查询模型实例

在shell中,你可以使用以下代码查询刚才创建的文章:

1
2
3
4
# 查询所有文章
articles = Article.objects.all()
for article in articles:
print(article.title) # 打印每篇文章的标题

小结

通过本节内容,你已经成功创建了一个简单的模型并将其迁移到数据库。此外,你还学习了如何创建和查询模型实例。

模型是Django的基础构件,了解如何定义和使用它们将为你后续的开发打下良好的基础。接下来,您可以探索更复杂的字段类型、关系模型以及如何在Django的管理后台中进行操作。