鱼C论坛

 找回密码
 立即注册
查看: 2207|回复: 3

关于django自定义注册用户登录的问题

[复制链接]
发表于 2023-10-12 17:46:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
django自带管理后台和登录,我实现了一个网站,想让它类似新浪邮箱只是完成前台登录,但不让他有django管理后台的权限,也不让他访问,我应该怎么实现呢?是单独写一个登录还是使用django自带的呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-10-12 17:47:14 | 显示全部楼层
您可以使用 Django 自带的认证系统来实现前台登录,并限制用户访问管理后台的权限。

首先,您可以创建一个自定义用户模型,以便在用户注册时收集所需的信息。然后,您可以使用 Django 自带的认证系统来处理用户的登录和身份验证。

为了限制用户访问管理后台的权限,您可以在您的项目中设置一个 URL 模式,只允许管理员用户访问管理后台。例如,您可以在您的项目中的 urls.py 文件中添加以下代码:

  1. from django.contrib import admin
  2. from django.urls import path

  3. urlpatterns = [
  4.     path('admin/', admin.site.urls),
  5.     # 添加一个 URL 模式,只允许管理员用户访问管理后台
  6.     path('restricted/', myapp.views.restricted, name='restricted'),
  7. ]
复制代码


然后,在您的应用程序视图中实现 restricted 视图,以便只有管理员用户可以访问它。例如:

  1. from django.contrib.auth.decorators import user_passes_test

  2. @user_passes_test(lambda u: u.is_superuser)
  3. def restricted(request):
  4.     # 只有管理员用户才能访问这个视图
  5.     return HttpResponse("Restricted area. Only superusers are allowed.")
复制代码


最后,您可以在您的模板中使用 Django 自带的登录表单,以便用户可以在前台登录。例如:

  1. {% if user.is_authenticated %}
  2.     Welcome, {{ user.username }}!
  3. {% else %}
  4.     <form method="post" action="{% url 'login' %}">
  5.         {% csrf_token %}
  6.         <label for="username">Username:</label>
  7.         <input type="text" name="username" required><br>
  8.         <label for="password">Password:</label>
  9.         <input type="password" name="password" required><br>
  10.         <input type="submit" value="Log in">
  11.     </form>
  12. {% endif %}
复制代码


希望这可以帮助您实现您的需求。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-12 17:48:48 | 显示全部楼层
你好!如果你想在Django中实现一个自定义的前台登录,可以使用Django提供的身份验证系统和表单来实现。这样你就可以实现类似新浪邮箱的前台登录功能,并且不需要使用Django管理后台。

以下是一种可能的实现方式:

1. 创建一个新的Django应用来处理前台登录逻辑。你可以使用python manage.py startapp loginapp命令创建一个名为loginapp的应用。

2. 在你的应用中创建一个视图函数来处理登录请求。你可以在loginapp应用的views.py文件中编写如下代码:
  1. from django.contrib.auth import authenticate, login
  2. from django.shortcuts import render, redirect
  3. def login_view(request):
  4.     if request.method == 'POST':
  5.         username = request.POST['username']
  6.         password = request.POST['password']
  7.         user = authenticate(request, username=username, password=password)
  8.         
  9.         if user is not None:
  10.             login(request, user)
  11.             return redirect('home')  # 登录成功后重定向到首页或其他页面
  12.         else:
  13.             error_message = '无效的用户名或密码'
  14.    
  15.     return render(request, 'login.html', {'error_message': error_message})
复制代码

3. 创建一个模板来显示登录表单。你可以在loginapp应用下创建名为templates/login.html的文件,并编写如下代码:

[/code]html
{% if error_message %}
<p>{{ error_message }}</p>
{% endif %}

<form method="post" action="{% url 'login' %}">
  {% csrf_token %}
  <input type="text" name="username" placeholder="用户名" required>
  <br>
  <input type="password" name="password" placeholder="密码" required>
  <br>
  <button type="submit">登录</button>
</form>
[/code]

4. 在你的主项目中配置URL路由,将登录视图映射到一个URL。在你的主项目的urls.py文件中添加如下代码:
  1. from django.urls import path
  2. from loginapp.views import login_view
  3. urlpatterns = [
  4.     # 其他URL配置
  5.     path('login/', login_view, name='login'),
  6. ]
复制代码

现在,你可以通过访问/login来显示登录表单,并且当用户提交表单时,会进行身份验证并登录。你可以根据需要自定义其他前台页面和功能。

希望这些信息对你有帮助!如果你还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-12 21:56:55 | 显示全部楼层
你可以参考这个项目:https://github.com/liangliangyy/DjangoBlog
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 17:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表