首页 > 编程语言 >Django:一个王者级Web开发Python框架

Django:一个王者级Web开发Python框架

时间:2024-12-21 10:00:25浏览次数:7  
标签:Web Python py Django blog models import post

大家好啊!今天我要和大家分享Python世界中的"网站开发利器"——Django框架。它就像是一个全能的网站建筑师,不仅自带了后台管理系统、数据库接口、用户认证等功能,还能帮我们处理各种安全问题。使用Django,我们可以快速搭建一个功能完善的网站。无论你是想做个人博客,还是想开发企业级网站,Django都能帮你实现!

1. Django快速入门

首先,我们需要安装Django:

# 安装Django
pip install django

# 创建新项目
django-admin startproject mysite

# 创建新应用
cd mysite
python manage.py startapp blog

小贴士:项目(project)和应用(app)的区别:一个项目可以包含多个应用,就像一个网站可以有博客、论坛、商城等多个模块。

基本项目结构

mysite/
    ├── manage.py           # 项目管理脚本
    ├── mysite/            
    │   ├── __init__.py
    │   ├── settings.py    # 项目设置
    │   ├── urls.py        # URL配置
    │   └── wsgi.py        # WSGI配置
    └── blog/
        ├── __init__.py
        ├── admin.py       # 后台管理
        ├── models.py      # 数据模型
        ├── views.py       # 视图函数
        └── apps.py        # 应用配置

2. Models:定义数据模型

在blog/models.py中创建我们的第一个模型:

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

class BlogPost(models.Model):
    title = models.CharField(max_length=200)  # 标题
    content = models.TextField()              # 内容
    created_at = models.DateTimeField(auto_now_add=True)  # 创建时间
    author = models.ForeignKey(User, on_delete=models.CASCADE)  # 作者
    
    def __str__(self):
        return self.title

小贴士:别忘了在settings.py中注册你的应用,然后执行数据库迁移:

python manage.py makemigrations
python manage.py migrate

3. Views:编写视图函数

在blog/views.py中创建视图:

from django.shortcuts import render, get_object_or_404
from .models import BlogPost

def post_list(request):
    # 获取所有博客文章
    posts = BlogPost.objects.all().order_by('-created_at')
    return render(request, 'blog/post_list.html', {'posts': posts})

def post_detail(request, pk):
    # 获取特定文章或返回404
    post = get_object_or_404(BlogPost, pk=pk)
    return render(request, 'blog/post_detail.html', {'post': post})

4. Templates:创建模板

在blog/templates/blog/post_list.html中:

{% raw %}
<!DOCTYPE html>
<html>
<head>
    <title>我的博客</title>
</head>
<body>
    <h1>博客文章列表</h1>
    {% for post in posts %}
        <div class="post">
            <h2>{{ post.title }}</h2>
            <p>{{ post.content|truncatewords:30 }}</p>
            <p>作者:{{ post.author.username }} | 发布时间:{{ post.created_at }}</p>
        </div>
    {% endfor %}
</body>
</html>
{% endraw %}

5. URLs:配置URL路由

在blog/urls.py中:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),
    path('post/<int:pk>/', views.post_detail, name='post_detail'),
]

记得在主项目的urls.py中包含应用的URLs:

from django.urls import path, include

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

6. Forms:处理表单

创建blog/forms.py:

from django import forms
from .models import BlogPost

class BlogPostForm(forms.ModelForm):
    class Meta:
        model = BlogPost
        fields = ['title', 'content']

添加新的视图函数:

from django.shortcuts import redirect
from .forms import BlogPostForm

def post_new(request):
    if request.method == "POST":
        form = BlogPostForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user
            post.save()
            return redirect('post_detail', pk=post.pk)
    else:
        form = BlogPostForm()
    return render(request, 'blog/post_edit.html', {'form': form})

小贴士:

  1. 开发时记得打开DEBUG模式,但部署时一定要关闭

  2. 使用django-debug-toolbar可以帮助调试

  3. 善用Django的Admin后台管理系统

  4. 注意保护用户数据和密码安全

练习小题目:

  1. 为博客添加评论功能

  2. 实现文章分类和标签功能

  3. 添加用户注册和登录功能

进阶提示:

  • 学习Django REST framework构建API

  • 了解Django的缓存机制

  • 探索Django的测试框架

  • 研究Django的部署方案

小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问我哦。祝大家学习愉快,Python学习节节高!

更多内容请关注微信公众号SurzZ

标签:Web,Python,py,Django,blog,models,import,post
From: https://blog.csdn.net/2301_80799243/article/details/144602771

相关文章

  • python3:访问apple server api
     一,安装用到的库:(venv)liuhongdi@lhdpc:/data/work/python/xiaoqu$pip3installPyJWTCollectingPyJWTDownloadingPyJWT-2.10.1-py3-none-any.whl.metadata(4.0kB)DownloadingPyJWT-2.10.1-py3-none-any.whl(22kB)Installingcollectedpackages:PyJWTSucces......
  • webman:通过orm访问数据库
    一,文档地址:https://www.workerman.net/doc/webman/db/tutorial.html二,安装所需的库$composerrequire-Willuminate/databaseilluminate/paginationilluminate/eventssymfony/var-dumperlaravel/serializable-closure三,配置文件:config/database.phpreturn[//......
  • django旅游网站-毕业设计源码33190
    目 录1引言1.1研究背景和意义1.2开发现状1.3论文结构与章节安排2旅游网站系统分析2.1可行性分析2.1.1法律可行性分析2.1.2技术可行性分析2.1.3经济可行性分析2.1.4社会可行性分析2.2系统功能分析2.2.1功能性分析2.3系统性能需求分析2.3.1......
  • 你有做过webAR吗?说说你的理解
    是的,我有过开发WebAR(Web-basedAugmentedReality,基于网络的增强现实)的经验。以下是我对WebAR在前端开发中的理解:WebAR是一种通过Web浏览器来体验的增强现实技术。与传统的增强现实应用相比,WebAR无需用户安装额外的应用或插件,只需通过支持WebAR的浏览器即可体验。这使得WebAR具有......
  • 做webAR你一般用哪些框架?
    在WebAR(Web端增强现实)的前端开发中,框架的选择主要取决于项目的具体需求和开发团队的偏好。目前,虽然没有特定的框架是专门为WebAR设计的,但Web前端开发的几大主流框架,如Angular、React和Vue,都可以被用于构建WebAR应用。这些框架提供了丰富的功能和强大的性能,能够满足WebAR开发的大部......
  • AI开发:支持向量机(SVM)鸢尾花模型入门教程- Python 机器学习
    最近接触了一些数据分析的任务,越来越多地听到支持向量机(SVM),之前我们也一起学习过 AI开发:支持向量机(SVM)入门教程-Python机器学习今天我们再由浅入深的地来重温和学习这个AI算法,以便我们进一步掌握如何熟悉和使用这一AI大杀器。SVM用在哪里 --文本分类垃圾邮件过滤:通......
  • 【Python】*args和**kwargs
    【Python】*args和**kwargs一、*args:接收不定数量的位置参数示例1:简单的加法计算器示例2:转发参数给另一个函数二、**kwargs:接收不定数量的关键字参数示例3:创建用户配置文件示例4:合并多个字典三、组合使用*args和**kwargs示例5:构建RESTfulAPI请求四、结论五、相关......
  • 【重要】python可以在命令行上运行的小工具模块
    下面是添加了序号列的表格。这些序号将帮助您更清晰地识别每个模块。序号模块用途用法示例1http.server启动一个简单的Web服务器,用于共享文件或提供简单的Web服务python-mhttp.server在默认端口8000启动Web服务器2webbrowser启动Web浏览器,并打开指定的URL......
  • 小球天平称重问题(python求解版本)
    Problem:这是一个经典的称重问题:有12个球,其中11个重量相同,1个球重量不同(可能更重或更轻),要求设计一种策略,用尽可能少的天平称重次数找出这个不同的球,并判断它是更重还是更轻。SolutionStep: 可以通过分治法来解决这个问题。每次将球分成多个组,通过比较各个组的重量来确......
  • WEB开发 - Flask 入门:由浅入深地带你学习
    Flask是一个轻量级的PythonWeb框架,比起Node.js,ASP .netCore等Web框架,它更适合初学者学习。它的设计哲学是简洁和灵活,旨在让开发者专注于功能实现,而不是配置和过多的框架限制。下面,我将以由浅入深的方式,一起来一步步理解和掌握Flask,帮助初学者打下一个比较扎实的Web......