Django用户登陆以及跳转后台管理页面1

 

 1 """S14Djngo URL Configuration
 2 
 3 The `urlpatterns` list routes URLs to views. For more information please see:
 4     https://docs.djangoproject.com/en/1.11/topics/http/urls/
 5 Examples:
 6 Function views
 7     1. Add an import:  from my_app import views
 8     2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
 9 Class-based views
10     1. Add an import:  from other_app.views import Home
11     2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
12 Including another URLconf
13     1. Import the include() function: from django.conf.urls import url, include
14     2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
15 """
16 from django.conf.urls import url
17 from django.contrib import admin
18 
19 from cmdb import views
20 
21 
22 
23 
24 urlpatterns = [
25     url(r'^admin/', admin.site.urls),
26     #url(r'^h.html/',views.home),
27     url(r'^login',views.login),
28     url(r'^home', views.home),
29 ]
urls.py

 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <link rel="stylesheet" href="/static/commons.css"/>
 7     <style>
 8         label{
 9             width:80px;
10             text-align:right;
11             display: inline-block;
12         }
13     </style>
14 </head>
15 <body>
16 
17     <form action="/login" method="post">
18         <p>
19             <label for="username">用户名:</label>
20             <input id="username" name="user" type='text'/>
21         </p>
22         <p>
23              <label for="password">密码:</label>
24              <input id="password" name="pwd" type='password'/>
25              <input type="submit" value="提交"/>
26             <span style="color:red;">{{ error_msg }}</span>
27         </p>
28     </form>
29     <script src ="/static/jquery.min.js"></script>
30 </body>
31 </html>
login.html
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7     <meta charset = "utf-8">
 8     <title>Title</title>
 9 <body style="margin: 0">
10     <div style="height: 48px;background-color: #ddb796"></div>
11     <div>
12         <table>
13             <tr>
14                 <td>李杰</td>
15                 <td>男</td>
16                 <td>sra@126.com</td>
17             </tr>
18             <tr>
19                 <td>研行</td>
20                 <td>女</td>
21                 <td>dgdg@163.com</td>
22             </tr>
23             <tr>
24                 <td>天天</td>
25                 <td>中</td>
26                 <td>sfsf@139.com</td>
27             </tr>
28         </table> 
29     </div>
30 
31 </body>
32 </html>
home.html

 

 1 from django.shortcuts import render
 2 # Create your views here.
 3 
 4 from django.shortcuts import render
 5 from django.shortcuts import redirect  #重新定向模块
 6 
 7 def login(request):
 8      #包含用户提交的所有信息
 9      #获取用户提交方法
10     #print(request.method)
11     error_msg = ""
12     if request.method == "POST":
13         #获取用户通过POST提交过来的数据
14         user =request.POST.get('user',None)
15         pwd =request.POST.get('pwd',None)
16         if user == 'root' and pwd == '123':
17             #去跳转到
18             return  redirect('home.html')
19         else:
20             #用户密码不匹配
21             error_msg = '用户名或密码错误'
22         # user = request.POST['user']
23         # pwd = request.POST['pwd']
24         # print(user,pwd)
25     return render(request,'login.html',{'error_msg':error_msg})
26 
27 def home(request):
28     return render(request,'home.html')
views.py

 


 

 


用JetBrains PyCharm 2017.2创建运行Django程序
http://www.cnblogs.com/ujq3/p/7882030.html

创建多个Django业务模块
http://www.cnblogs.com/ujq3/p/7884075.html

Django多业务模块的写法
http://www.cnblogs.com/ujq3/p/7884279.html

Django与HTML业务基本结合--基本的用户名密码提交方法2
http://www.cnblogs.com/ujq3/p/7884615.html

Django静态文件以及模板文件的配置
http://www.cnblogs.com/ujq3/p/7884881.html

Django用户名密码错误提示
http://www.cnblogs.com/ujq3/p/7891352.html

 

 

 

转载于:https://www.cnblogs.com/ujq3/p/7891774.html

### Django 实现用户登录页面的示例代码及教程 在 Django实现用户登录功能通常涉及以下几个方面:定义 URL 路由、编写视图逻辑以及配置模板文件。以下是基于提供的引用内容和专业知识整理的一个完整的解决方案。 #### 1. 定义 URL 路由 URL 配置用于指定访问路径及其对应的视图函数。可以在 `urls.py` 文件中添加如下路由: ```python from django.urls import path from .views import LoginView, LoginInView, LoginOutView urlpatterns = [ path('login/', LoginView.as_view(), name='login'), path('auth/', LoginInView.as_view(), name='auth_login'), path('logout/', LoginOutView.as_view(), name='logout'), ] ``` 此部分代码定义了三个主要路径:用户登录页 (`/login/`)、认证接口 (`/auth/`) 和登出路由 (`/logout/`) [^1]。 --- #### 2. 编写视图逻辑 Django 提供多种方式来处理视图逻辑,可以使用类基视图 (Class-Based Views) 或者函数基视图 (Function-Based Views) 来完成。 ##### 类基视图实现 以下是一个典型的类基视图实现方案: ```python from django.shortcuts import redirect from django.views.generic.base import TemplateView, View from django.contrib.auth import authenticate, login, logout class LoginView(TemplateView): """渲染登录页面""" template_name = 'site/login.html' class LoginInView(View): """处理用户登录请求""" def post(self, request, *args, **kwargs): username = request.POST.get('username') password = request.POST.get('password') # 认证用户 user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect('/backend/config/index') # 登录成功跳转后台首页 else: return redirect('/backend/login') # 登录失败重定向回登录页 class LoginOutView(View): """处理用户登出请求""" def get(self, request, *args, **kwargs): logout(request) return redirect('/backend/login') # 登出后重定向至登录页 ``` 这段代码展示了如何通过继承 `TemplateView` 渲染 HTML 页面,并利用 `authenticate`, `login`, 和 `logout` 方法管理用户的会话状态 。 --- ##### 函数基视图实现 如果更倾向于使用函数基视图,则可参考以下代码片段: ```python from django.shortcuts import render, redirect from django.contrib.auth import authenticate, login, logout def login_view(request): """处理用户登录请求""" if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect('home') # 替换为实际的目标地址 else: error_message = "用户名或密码错误" return render(request, 'login.html', {'error': error_message}) return render(request, 'login.html') def logout_view(request): """处理用户登出请求""" logout(request) return redirect('login') # 替换为目标登录页面名称 ``` 该版本更加简洁明了,适合初学者理解和实践 [^2]。 --- #### 3. 创建模板文件 为了提供良好的用户体验,还需要设计前端界面。下面是一份简单的 HTML 表单作为登录页面的基础结构: ```html <!-- templates/site/login.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登录</title> </head> <body> <h2>用户登录</h2> {% if error %} <p style="color:red;">{{ error }}</p> {% endif %} <form method="post" action="{% url 'auth_login' %}"> {% csrf_token %} <label for="id_username">用户名:</label><br/> <input type="text" id="id_username" name="username"><br/><br/> <label for="id_password">密 码:</label><br/> <input type="password" id="id_password" name="password"><br/><br/> <button type="submit">登录</button> </form> <a href="#">忘记密码?</a> </body> </html> ``` 注意表单中的 `{% csrf_token %}` 是防止跨站伪造攻击的重要措施;而动作属性应指向负责验证数据的具体端点 [^2]。 --- ### 总结 以上介绍了两种不同风格的视图构建方法——分别是面向对象编程思维下的 CBV(Class-Based Views),还有传统 FP(Functional Programming)范式的 FBV(Function-Based Views)。无论采用哪种形式都需要确保安全性与功能性兼备,在此基础上还可以进一步优化样式布局或者扩展额外特性比如记住账号选项等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值