求基于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
相关产品推荐
相关产品推荐

