当前位置: 首页 > news >正文

个人做论坛网站有哪些常用的网站推广

个人做论坛网站有哪些,常用的网站推广,动漫设计培训班收费,字节跳动广告投放平台login_required 是 Django 提供的一个装饰器 (decorator),用于保护视图函数,确保只有已登录的用户才能访问该视图。它是 Django 认证系统的核心组件之一,提供了简单而强大的访问控制功能。环境准备安装 Djangopip install django项目创建步骤…

@login_required 是 Django 提供的一个装饰器 (decorator),用于保护视图函数,确保只有已登录的用户才能访问该视图。它是 Django 认证系统的核心组件之一,提供了简单而强大的访问控制功能。

环境准备

安装 Django

pip install django

项目创建步骤

1. 创建 Django 项目

django-admin startproject myproject
cd myproject

2. 创建应用

python manage.py startapp bookapp
项目结构

        

3. 配置项目 (settings.py)

myproject/settings.py中添加以下配置:

INSTALLED_APPS = [# ...其他应用'bookapp',
]# 登录URL配置
LOGIN_URL = '/login/'
LOGIN_REDIRECT_URL = '/books/'
LOGOUT_REDIRECT_URL = '/login/'

为什么要在 settings.py 中配置登录相关 URL?

Django 的认证系统设计了三个核心 URL 配置,用于处理认证流程中的页面跳转:

  1. LOGIN_URL (/login/)

    • 作用:指定未登录用户访问受保护页面时的重定向目标
    • 原理:当用户尝试访问被@login_required保护的视图时,Django 会检查用户认证状态,如果未登录,会自动重定向到该 URL
  2. LOGIN_REDIRECT_URL (/books/)

    • 作用:指定用户登录成功后的默认跳转页面
    • 应用场景:当用户直接访问登录页面并成功登录后,会跳转到该 URL
  3. LOGOUT_REDIRECT_URL (/login/)

    • 作用:指定用户登出后的跳转页面
    • 安全考虑:登出后重定向到登录页面是常见的安全实践

这些配置是全局设置,为整个项目提供一致的认证体验,避免在每个视图中重复定义相同的跳转逻辑。

4. 创建视图 (bookapp/views.py)

from django.contrib.auth.decorators import login_required
from django.contrib.auth.views import LoginView
from django.shortcuts import renderclass CustomLoginView(LoginView):template_name = 'login.html'@login_required
def book_list(request):# 示例书籍数据books = [{'id': 1, 'title': 'Django for Beginners', 'author': 'William S. Vincent'},{'id': 2, 'title': 'Python Crash Course', 'author': 'Eric Matthes'},{'id': 3, 'title': 'Two Scoops of Django', 'author': 'Daniel Roy Greenfeld'},]return render(request, 'book_list.html', {'books': books})

5. 配置 URL

myproject/urls.py
from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('', include('bookapp.urls')),
]

bookapp/urls.py
from django.urls import path
from django.contrib.auth.views import LogoutView
from . import viewsurlpatterns = [path('login/', views.CustomLoginView.as_view(), name='login'),path('logout/', LogoutView.as_view(), name='logout'),path('books/', views.book_list, name='book_list'),
]

6. 创建模板文件

创建模板目录
mkdir -p bookapp/templates
login.html
<!DOCTYPE html>
<html>
<head><title>Login</title><style>.login-container { max-width: 400px; margin: 50px auto; padding: 20px; box-shadow: 0 0 10px #ccc; }.form-group { margin-bottom: 15px; }label { display: block; margin-bottom: 5px; }input { width: 100%; padding: 8px; box-sizing: border-box; }button { background-color: #4CAF50; color: white; padding: 10px 15px; border: none; cursor: pointer; }button:hover { background-color: #45a049; }.error { color: red; margin-bottom: 15px; }</style>
</head>
<body><div class="login-container"><h2>Login</h2>{% if form.errors %}<div class="error">Your username and password didn't match. Please try again.</div>{% endif %}<form method="post">{% csrf_token %}<div class="form-group"><label for="id_username">Username</label>{{ form.username }}</div><div class="form-group"><label for="id_password">Password</label>{{ form.password }}</div><button type="submit">Login</button></form></div>
</body>
</html>
book_list.html
<!DOCTYPE html>
<html>
<head><title>Book List</title><style>.container { max-width: 800px; margin: 0 auto; padding: 20px; }.logout-link { text-align: right; margin-bottom: 20px; }table { width: 100%; border-collapse: collapse; }th, td { padding: 12px; text-align: left; border-bottom: 1px solid #ddd; }th { background-color: #f2f2f2; }</style>
</head>
<body><div class="container"><!-- 在book_list.html中替换原有的登出链接 -->
<div class="logout-link"><form action="{% url 'logout' %}" method="post">{% csrf_token %}<button type="submit" style="background: none; border: none; color: blue; text-decoration: underline; cursor: pointer;">Logout</button></form>
</div><h1>Book List</h1><table><tr><th>ID</th><th>Title</th><th>Author</th></tr>{% for book in books %}<tr><td>{{ book.id }}</td><td>{{ book.title }}</td><td>{{ book.author }}</td></tr>{% endfor %}</table></div>
</body>
</html>

7.执行数据库迁移

ps:如果不执行数据库迁移,没有用户表,创建超级用户会失败

python manage.py migrate

8. 创建超级用户 (管理员)

python manage.py createsuperuser

9. 运行开发服务器

python manage.py runserver

实现效果:

http://127.0.0.1:8000/books

未登陆时,直接访问books,会跳转至登陆页

登陆成功后才能查看页面        

http://www.dtcms.com/a/411547.html

相关文章:

  • 【读书笔记】架构整洁之道 P6 实现细节
  • 古籍版面分析新SOTA:HisDoc-DETR如何助力AI赋能古籍数字化难题
  • 浙江省网站icp备案多久oa协同办公系统
  • 伊朗声称以色列核计划数据遭重大泄露
  • 自适应平台(Adaptive Platform)标准 ——Specification of Sensor Interfaces
  • LeetCode热题--200. 岛屿数量--中等
  • 营销型网站试运营调忧北京海淀房管局网站
  • 网站建设与制作与维护ppt网站百度排名怎么做快
  • SSM飞机售票管理系统63z52(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
  • [论文阅读] 人工智能 + 软件工程 | 当传统调试遇上LLM:CodeHinter为新手程序员打造专属辅助工具
  • 亚马逊网站做外贸网站是可以做的吗
  • Kimi推出全新Agent模式OK Computer,基于K2模型的端到端任务执行,已开启灰度测试
  • 用vs2010做网站视频教程高端网站制作报价
  • react-native集成PDF预览组件react-native-pdf
  • Dify笔记 知识库
  • 模板建站服务器网页打不开的解决方法
  • 女生做网站前台设置自动删除的wordpress
  • 苏州市吴江太湖新城建设局网站微信手机网站设计6
  • 单片机开发中的队列数据结构详解,队列数据结构在单片机软件开发中的应用详解,C语言
  • 邯郸网站推广wordpress 页面生成
  • 搭建本地代理服务器
  • USB4接口防护,ESD管与TVS管怎么选?-ASIM阿赛姆
  • LazyLLM部署日志
  • 祝贺职业教育网站上线网站的前端和后台
  • 第三人称:角色攻击
  • 怎么理解GO中的context
  • 国内永久免费建站哈尔滨网站设计有哪些步骤
  • 运动控制教学——5分钟学会样条曲线算法!(三次样条曲线,B样条曲线)
  • HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容——错误代码:0x00000000
  • 备案 多个网站上海网站制作建设是什么