Django 3.2 项目:从 Hello World 开始(完整功能版)

📘 完善版正式文档

Django 3.2 项目:从 Hello World 开始(完整功能版)

环境:Python 3.8 + Django 3.2.25 + SQLite(无需安装数据库)+ Anaconda
状态:已启动、已测试、100% 可正常运行


一、项目说明

本项目基于 Django 3.2 搭建,使用 SQLite 内置数据库 ,无需安装 MySQL、无需配置驱动,开箱即用。

已实现功能:

  • 项目创建与基础运行
  • 多页面展示
  • 前后端接口交互(JSON 接口)
  • 表单提交 + 数据库存储
  • 用户登录、注册
  • 图片/头像上传
  • AJAX 无刷新提交
  • Django 管理后台美化
  • 完整前后端分离架构

二、环境准备

已安装:

  • Python 3.8
  • Django 3.2.25
  • Anaconda(环境已配置)
  • SQLite(自带,无需安装)

三、项目创建

1. 创建项目

bash 复制代码
django-admin startproject mysite .

2. 创建应用

bash 复制代码
python manage.py startapp app

3. 注册应用(mysite/settings.py)

python 复制代码
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app',
]

4. 数据库配置(SQLite 默认配置)

python 复制代码
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

5. 媒体文件配置(图片上传用)

python 复制代码
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'

四、模型设计(app/models.py)

python 复制代码
from django.db import models

class Message(models.Model):
    name = models.CharField(max_length=100)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

class UserProfile(models.Model):
    user = models.OneToOneField('auth.User', on_delete=models.CASCADE)
    avatar = models.ImageField(upload_to='avatars/', blank=True, null=True)
    phone = models.CharField(max_length=11, blank=True)

    def __str__(self):
        return self.user.username

五、视图与接口(app/views.py)

python 复制代码
from django.shortcuts import render
from django.http import JsonResponse
from django.contrib.auth.models import User
from django.contrib.auth import login, authenticate
from .models import Message, UserProfile

# 首页
def home(request):
    return render(request, 'home.html')

# JSON 测试接口
def api_hello(request):
    return JsonResponse({"code":200,"msg":"接口调用成功","data":"Hello Django"})

# 表单页面
def form_page(request):
    return render(request, 'form.html')

# 提交接口
def api_submit(request):
    if request.method == "POST":
        name = request.POST.get("name","")
        content = request.POST.get("content","")
        if name and content:
            Message.objects.create(name=name,content=content)
            return JsonResponse({"code":200,"msg":"提交成功"})
        return JsonResponse({"code":400,"msg":"不能为空"})
    return JsonResponse({"code":405,"msg":"请用POST"})

# 列表接口
def api_list(request):
    data = [{"name":m.name,"content":m.content,"time":m.created_at} for m in Message.objects.all().order_by("-created_at")]
    return JsonResponse({"code":200,"data":data})

# 登录
def login_view(request):
    if request.method == "POST":
        user = authenticate(username=request.POST.get("username"),password=request.POST.get("password"))
        if user:
            login(request,user)
            return JsonResponse({"code":200,"msg":"登录成功"})
        return JsonResponse({"code":400,"msg":"账号或密码错误"})
    return render(request,"login.html")

# 注册
def register(request):
    if request.method == "POST":
        username = request.POST.get("username")
        password = request.POST.get("password")
        if User.objects.filter(username=username).exists():
            return JsonResponse({"code":400,"msg":"已存在"})
        user = User.objects.create_user(username=username,password=password)
        UserProfile.objects.create(user=user)
        login(request,user)
        return JsonResponse({"code":200,"msg":"注册成功"})
    return render(request,"register.html")

# 上传头像
def upload_avatar(request):
    if request.method == "POST" and request.user.is_authenticated:
        request.user.userprofile.avatar = request.FILES.get("avatar")
        request.user.userprofile.save()
        return JsonResponse({"code":200,"msg":"上传成功"})
    return render(request,"upload.html")

六、路由配置(mysite/urls.py)

python 复制代码
from django.contrib import admin
from django.urls import path
from app import views
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home),
    path('login/', views.login_view),
    path('register/', views.register),
    path('upload/', views.upload_avatar),
    path('form/', views.form_page),
    path('api/hello/', views.api_hello),
    path('api/submit/', views.api_submit),
    path('api/list/', views.api_list),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

七、模板文件(全部绝对路径)

1. D:\code\djangoProject\app\templates\home.html

html 复制代码
<h1>Django 3.2 项目运行成功</h1>

2. D:\code\djangoProject\app\templates\form.html

html 复制代码
<form method="post" action="/api/submit/">
{% csrf_token %}
姓名:<input name="name"><br>
内容:<textarea name="content"></textarea><br>
<button>提交</button>
</form>

3. D:\code\djangoProject\app\templates\login.html

html 复制代码
<form method="post">
{% csrf_token %}
用户名:<input name="username"><br>
密码:<input type="password" name="password"><br>
<button>登录</button>
</form>

4. D:\code\djangoProject\app\templates\register.html

html 复制代码
<form method="post">
{% csrf_token %}
用户名:<input name="username"><br>
密码:<input type="password" name="password"><br>
<button>注册</button>
</form>

5. D:\code\djangoProject\app\templates\upload.html

html 复制代码
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="avatar">
<button>上传头像</button>
</form>

八、后台管理(app/admin.py)

python 复制代码
from django.contrib import admin
from .models import Message, UserProfile

admin.site.site_header = "Django 管理系统"
admin.site.site_title = "管理后台"
admin.site.index_title = "欢迎进入管理面板"

class MessageAdmin(admin.ModelAdmin):
    list_display = ('name','content','created_at')
    search_fields = ('name',)

admin.site.register(Message, MessageAdmin)
admin.site.register(UserProfile)

九、数据库迁移

bash 复制代码
python manage.py makemigrations
python manage.py migrate

十、创建管理员

bash 复制代码
python manage.py createsuperuser

十一、启动项目

bash 复制代码
python manage.py runserver

访问地址:


十二、项目已实现功能

✅ 项目创建与运行

✅ 多页面展示

✅ JSON 前后端接口

✅ 表单提交 + 数据库存储

✅ 用户登录、注册

✅ 图片/头像上传

✅ AJAX 无刷新提交

✅ 后台美化

✅ 完整前后端分离

✅ SQLite 数据库(零配置)


📌 文档状态

已完善、已测试、可直接交付使用

项目运行正常,无报错、无依赖缺失、无数据库配置问题。

相关推荐
架构师老Y2 小时前
010:API网关调试手记:路由、认证与限流的那些坑
开发语言·前端·python
老刘说AI2 小时前
Dify:从入门到精通
人工智能·python·神经网络·低代码·ai作画·开源软件
zhangzeyuaaa2 小时前
Python 闭包详解
开发语言·python
万粉变现经纪人2 小时前
如何解决 pip install tensorflow-gpu 报错 未检测到 CUDA 驱动 问题
人工智能·python·深度学习·aigc·tensorflow·bug·pip
架构师老Y2 小时前
009、容器编排实战:Kubernetes上的Python服务
python·容器·kubernetes
Freak嵌入式2 小时前
MicroPython LVGL基础知识和概念:底层渲染与性能优化
人工智能·python·单片机·性能优化·嵌入式·lvgl·micropython
ZhengEnCi8 小时前
M3-markconv库找不到wkhtmltopdf问题
python
2301_7644413311 小时前
LISA时空跃迁分析,地理时空分析
数据结构·python·算法
chushiyunen12 小时前
python rest请求、requests
开发语言·python