Django开发笔记

Django基础入门步骤

步骤一:安装Django
确保已经安装了Python环境,然后在命令行中执行以下命令安装Django:

pip install django

步骤二:创建Django项目
在命令行中执行以下命令来创建一个新的Django项目:

django-admin startproject 项目名称

步骤三:创建Django应用
进入刚才创建的项目目录,执行以下命令来创建一个Django应用:

cd 项目名称
python manage.py startapp 应用名称

步骤四:连接数据库
在Django项目的settings.py文件中,配置数据库连接。

# 项目名称/settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',  # 使用SQLite数据库
        'NAME': BASE_DIR / 'db.sqlite3',        # 数据库文件路径
    }
}

上述示例中使用了SQLite数据库,您也可以根据需要选择其他数据库,如MySQL、PostgreSQL等。配置其他数据库时,需要安装相应的数据库引擎和设置连接信息。

步骤五:定义模型
在Django应用中的models.py文件中定义模型(数据库表结构)。

# 应用名称/models.py
from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    pub_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

步骤六:迁移数据库
执行以下命令将模型同步到数据库:

python manage.py makemigrations
python manage.py migrate

步骤七:创建视图
在Django应用中的views.py文件中创建视图函数,用于处理用户请求并返回相应的数据或页面。

# 应用名称/views.py
from django.shortcuts import render
from .models import Article

def article_list(request):
    articles = Article.objects.all()
    return render(request, 'article_list.html', {'articles': articles})

步骤八:配置URL
在Django应用中的urls.py文件中配置URL路由,将请求映射到相应的视图函数。

# 应用名称/urls.py
from django.urls import path
from . import views

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

步骤九:创建模板
在Django应用的templates文件夹中创建HTML模板,用于渲染视图函数返回的数据。

<!-- 应用名称/templates/article_list.html -->
<!DOCTYPE html>
<html>
<head>
    <title>文章列表</title>
</head>
<body>
    <h1>文章列表</h1>
    <ul>
        {% for article in articles %}
        <li>{{ article.title }} - {{ article.pub_date }}</li>
        {% endfor %}
    </ul>
</body>
</html>

步骤十:运行开发服务器
执行以下命令来运行Django开发服务器:

python manage.py runserver

现在,您可以在浏览器中访问http://localhost:8000/应用名称/articles/来查看文章列表页面。您的Django项目已经连接了数据库,并且可以显示模型中的数据。

Django实现增删改查的操作

假设我们有一个模型(Model)表示文章(Article),其中包含title(标题)、content(内容)和pub_date(发布日期)三个字段。

步骤一:创建Django项目和应用
按照前面的步骤创建一个Django项目和一个应用,假设项目名称为"myproject",应用名称为"myapp"。

步骤二:定义模型
在Django应用中的models.py文件中定义模型。

# myapp/models.py
from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    pub_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

步骤三:迁移数据库
执行以下命令将模型同步到数据库:

python manage.py makemigrations
python manage.py migrate

步骤四:增加数据
可以在Django的shell中添加数据,或者在代码中使用模型的API添加数据。这里我们在Django的shell中演示添加数据的操作。

python manage.py shell

然后在shell中执行以下代码:

from myapp.models import Article

# 创建并保存一个新的文章
article = Article(title="第一篇文章", content="这是文章的内容。")
article.save()

步骤五:查询数据
可以使用模型的API来查询数据。

# 查询所有文章
all_articles = Article.objects.all()

# 条件查询
filtered_articles = Article.objects.filter(title__contains="第一篇")

# 获取单个对象
single_article = Article.objects.get(title="第一篇文章")

步骤六:更新数据
可以使用模型的API来更新数据。

# 获取要更新的文章对象
article_to_update = Article.objects.get(title="第一篇文章")

# 更新标题和内容
article_to_update.title = "更新后的标题"
article_to_update.content = "这是更新后的内容。"
article_to_update.save()

步骤七:删除数据
可以使用模型的API来删除数据。

# 获取要删除的文章对象
article_to_delete = Article.objects.get(title="第一篇文章")

# 删除对象
article_to_delete.delete()

Django增删改查代码层的示例

  1. 增删改查代码:应该写在Django应用的views.py文件中。views.py文件用于定义视图函数,处理用户请求并返回相应的数据或页面。在这里,我们可以把增删改查操作包装成视图函数,以便在浏览器中通过用户请求来执行这些操作。
  2. 模型定义:模型的定义应该写在Django应用的models.py文件中。这个文件用于定义应用的数据模型,即数据库表结构。
  3. URL配置:URL的配置应该写在Django应用的urls.py文件中。这个文件用于定义应用的URL路由,将请求映射到相应的视图函数。

具体地,按照上述描述,代码应该写在以下文件的对应位置:

  1. 增删改查代码:应该写在Django应用的views.py文件中,例如:

# myapp/views.py
from django.shortcuts import render
from .models import Article

def article_list(request):
    articles = Article.objects.all()
    return render(request, 'article_list.html', {'articles': articles})

def create_article(request):
    if request.method == 'POST':
        title = request.POST['title']
        content = request.POST['content']
        article = Article(title=title, content=content)
        article.save()
        # 可以添加保存成功后的处理,如重定向到列表页面
        return redirect('article_list')
    else:
        return render(request, 'create_article.html')

def update_article(request, article_id):
    article = get_object_or_404(Article, id=article_id)
    if request.method == 'POST':
        title = request.POST['title']
        content = request.POST['content']
        article.title = title
        article.content = content
        article.save()
        # 可以添加保存成功后的处理,如重定向到详情页面
        return redirect('article_detail', article_id=article_id)
    else:
        return render(request, 'update_article.html', {'article': article})

def delete_article(request, article_id):
    article = get_object_or_404(Article, id=article_id)
    if request.method == 'POST':
        article.delete()
        # 可以添加删除成功后的处理,如重定向到列表页面
        return redirect('article_list')
    else:
        return render(request, 'delete_article.html', {'article': article})

  1. 模型定义:模型的定义应该写在Django应用的models.py文件中,例如:

# myapp/models.py
from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    pub_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

  1. URL配置:URL的配置应该写在Django应用的urls.py文件中,例如:

# myapp/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('articles/', views.article_list, name='article_list'),
    path('articles/create/', views.create_article, name='create_article'),
    path('articles/<int:article_id>/update/', views.update_article, name='update_article'),
    path('articles/<int:article_id>/delete/', views.delete_article, name='delete_article'),
]

更多Django的技术栈

1. **用户认证和权限控制**: 实现用户注册、登录、注销功能,并使用Django内置的认证系统来管理用户权限。同时,可以探索Django的装饰器和权限管理机制,确保只有授权用户才能访问特定的页面或执行特定操作。

2. **RESTful API**: 使用Django REST framework构建RESTful API,允许前端和移动端应用通过API访问数据。了解视图集、序列化器、认证和权限设置等相关概念,确保API的安全性和性能。

3. **异步任务处理**: 使用Django的Celery和RabbitMQ等工具,实现异步任务处理,如发送电子邮件、处理大量数据等。这有助于提高网站的响应速度和可扩展性。

4. **文件上传和存储**: 学习如何使用Django的文件上传功能,并结合云存储服务如Amazon S3或Google Cloud Storage,将文件存储在可靠和可扩展的存储中。

5. **国际化和本地化**: 探索如何在Django项目中实现国际化和本地化,让网站支持多语言和不同地区的时间、日期等格式。

6. **性能优化**: 学习Django中的性能优化技巧,包括数据库查询优化、缓存机制、视图缓存等,以提高网站的响应速度和吞吐量。

7. **单元测试和集成测试**: 编写单元测试和集成测试,保证代码的质量和稳定性。了解Django的测试框架和工具,如unittest和Selenium。

8. **WebSocket和实时通信**: 使用Django Channels实现WebSocket连接,构建实时通信功能,如聊天室或实时数据展示。

9. **社交登录集成**: 将社交登录(如Facebook、Google、GitHub等)集成到您的Django应用中,让用户可以使用他们的社交媒体账号进行登录。

10. **数据可视化**: 使用Django结合图表库(如Matplotlib、Plotly等)和前端框架(如Django Chart.js)实现数据可视化功能,以图表形式展示数据。