大家好啊!今天我要和大家分享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})
小贴士:
-
开发时记得打开DEBUG模式,但部署时一定要关闭
-
使用django-debug-toolbar可以帮助调试
-
善用Django的Admin后台管理系统
-
注意保护用户数据和密码安全
练习小题目:
-
为博客添加评论功能
-
实现文章分类和标签功能
-
添加用户注册和登录功能
进阶提示:
-
学习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