You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求基于PostgreSQL/MySQL的Django极简登录示例(仿Flask示例)

基于Django的极简登录页面实现

下面是完全符合需求的极简Django登录示例,无多余导航/侧边栏,支持MySQL/PostgreSQL切换,验证通过后跳转至简单控制台页面。

1. 项目初始化

# 创建项目
django-admin startproject minimal_login
cd minimal_login

# 创建账号管理app
python manage.py startapp accounts

打开minimal_login/settings.py,将accounts添加到INSTALLED_APPS:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'accounts',  # 新增
]

2. 数据库配置(支持切换)

MySQL配置

先安装驱动:pip install mysqlclient,然后修改settings.py中的DATABASES:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'minimal_login_db',  # 提前创建好的数据库名
        'USER': 'your_db_username',
        'PASSWORD': 'your_db_password',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

PostgreSQL配置

先安装驱动:pip install psycopg2-binary,修改DATABASES:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'minimal_login_db',
        'USER': 'your_db_username',
        'PASSWORD': 'your_db_password',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

3. 编写视图逻辑

打开accounts/views.py,写入登录和控制台视图:

from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from django.contrib import messages

def login_view(request):
    # 已登录用户直接跳控制台
    if request.user.is_authenticated:
        return redirect('dashboard')
    
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)
        
        if user:
            login(request, user)
            return redirect('dashboard')
        else:
            messages.error(request, '用户名或密码错误')
    
    return render(request, 'accounts/login.html')

def dashboard(request):
    if not request.user.is_authenticated:
        return redirect('login')
    return render(request, 'accounts/dashboard.html')

4. 配置URL路由

项目根路由(minimal_login/urls.py)

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('accounts.urls')),  # 路由转发到accounts
]

app路由(新建accounts/urls.py)

from django.urls import path
from django.contrib.auth.views import LogoutView
from . import views

urlpatterns = [
    path('', views.login_view, name='login'),
    path('dashboard/', views.dashboard, name='dashboard'),
    path('logout/', LogoutView.as_view(next_page='login'), name='logout'),
]

5. 创建页面模板

在项目根目录新建templates/accounts文件夹,创建以下两个模板文件:

登录页面(templates/accounts/login.html)

<!DOCTYPE html>
<html>
<head>
    <title>登录</title>
    <style>
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
            font-family: Arial, sans-serif;
            background-color: #f5f5f5;
        }
        .login-box {
            background: white;
            padding: 2.5rem;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
            width: 320px;
        }
        .login-box h2 {
            text-align: center;
            margin: 0 0 1.5rem 0;
            color: #333;
        }
        .form-group {
            margin-bottom: 1.2rem;
        }
        .form-group label {
            display: block;
            margin-bottom: 0.5rem;
            color: #555;
        }
        .form-group input {
            width: 100%;
            padding: 0.7rem;
            border: 1px solid #ddd;
            border-radius: 4px;
            box-sizing: border-box;
            font-size: 1rem;
        }
        .btn-submit {
            width: 100%;
            padding: 0.8rem;
            background-color: #007bff;
            color: white;
            border: none;
            border-radius: 4px;
            font-size: 1rem;
            cursor: pointer;
            margin-top: 0.5rem;
        }
        .btn-submit:hover {
            background-color: #0056b3;
        }
        .error {
            color: #dc3545;
            text-align: center;
            margin-bottom: 1rem;
            padding: 0.5rem;
            background-color: #f8d7da;
            border-radius: 4px;
        }
    </style>
</head>
<body>
    <div class="login-box">
        <h2>用户登录</h2>
        {% if messages %}
            {% for msg in messages %}
                <div class="error">{{ msg }}</div>
            {% endfor %}
        {% endif %}
        <form method="post">
            {% csrf_token %}
            <div class="form-group">
                <label for="username">用户名</label>
                <input type="text" id="username" name="username" required>
            </div>
            <div class="form-group">
                <label for="password">密码</label>
                <input type="password" id="password" name="password" required>
            </div>
            <button type="submit" class="btn-submit">登录</button>
        </form>
    </div>
</body>
</html>

控制台页面(templates/accounts/dashboard.html)

<!DOCTYPE html>
<html>
<head>
    <title>控制台</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            padding: 2rem;
            text-align: center;
            background-color: #f5f5f5;
        }
        .welcome {
            font-size: 1.8rem;
            color: #333;
            margin-bottom: 1.5rem;
        }
        .btn-logout {
            padding: 0.7rem 1.5rem;
            background-color: #dc3545;
            color: white;
            border: none;
            border-radius: 4px;
            font-size: 1rem;
            cursor: pointer;
        }
        .btn-logout:hover {
            background-color: #c82333;
        }
    </style>
</head>
<body>
    <div class="welcome">欢迎回来,{{ request.user.username }}!</div>
    <form method="post" action="{% url 'logout' %}">
        {% csrf_token %}
        <button type="submit" class="btn-logout">退出登录</button>
    </form>
</body>
</html>

6. 初始化数据库并启动服务

# 生成数据库迁移文件
python manage.py makemigrations

# 执行迁移
python manage.py migrate

# 创建测试用户(按提示输入用户名、邮箱、密码)
python manage.py createsuperuser

# 启动开发服务器
python manage.py runserver

访问http://127.0.0.1:8000即可看到居中的登录窗口,输入测试账号密码即可登录到控制台页面。

内容的提问来源于stack exchange,提问作者BosnianFlajter2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:55:06