Django登录部分(Django login part)
我现在正在使用Django框架的系统。 我正在编写用户登录部分。 它似乎很成功,但效果不佳。
- 登录系统可以通过他/她的用户名和密码识别用户。
- 身份验证只能持续一个“网页”。 当我加载另一个页面甚至重新加载页面时,django无法获取用户的信息(似乎已注销)
- 如果我查看了页面资源,我看到了登录过程后创建的会话号。
我该怎么做才能确保只需要一次登录? 并让我的用户在整个过程中登录?
这是我的视图文件
from django.shortcuts import render from django.http import HttpResponse,HttpResponseRedirect from django.template import RequestContext, loader from django.shortcuts import render from django.contrib.auth.decorators import login_required from django.contrib.auth import authenticate, login, logout from django.shortcuts import render_to_response,redirect from django.template import RequestContext from django.views.decorators.csrf import csrf_exempt from django.template.context_processors import csrf from . import models from . import form as f from django.contrib.sessions.backends.db import SessionStore def index(request): if request.user != None : template = loader.get_template('index.html') return HttpResponse(template.render(None)) else : return HttpResponseRedirect('/PDT/login_failed') def Home(request): template = loader.get_template('Home.html') return HttpResponse(template.render(None)) def loggin_in(request): c = {} c.update(csrf(request)) return render_to_response('login.html', c) def login_user(request): logout(request) username = password = '' if request.POST: username = request.POST.get('username','') password = request.POST.get('password','') user = authenticate(username=username, password=password) if user is not None: if user.is_active: login(request, user) request.session['username']=user.username return HttpResponseRedirect('/PDT/logged_successful') return HttpResponseRedirect('/PDT/inactive') return HttpResponseRedirect('/PDT/incorrect') return HttpResponseRedirect('/PDT/login_failed') def logged_in(request): if request.user : return render_to_response('index.html',{ 'user' : request.user },context_instance=RequestContext(request)) else : return HttpResponseRedirect('/PDT/login_failed') def login_failed(request): return render_to_response('problem.html',{ 'message' : "Login failed" }) def log_out(request): request.session.flush() logout(request) return render_to_response('problem.html',{ 'message' : "Logged out" }) def inactive(request): return render_to_response('problem.html',{ 'message' : "Inactive" }) def incorrect(request): return render_to_response('problem.html',{ 'message' : "Incorrect Username or Password" }) def iter_update(request): if request.session['username'] != None : return render_to_response('iter_update.html',{ 'user' : request.user },context_instance=RequestContext(request)) else : return HttpResponseRedirect('/PDT/login_failed') def Create_form(request): if request.method == "POST": form = f.ProjectForm(request.POST) if(form.is_valid()): print(request.POST['title']) form.save() message = 'success' else: message = 'fail' return render_to_response('Create_form.html', {'message': message, 'user': request.user,}, context_instance=RequestContext(request)) else: return render_to_response('Create_form.html', {'form': f.ProjectForm()}, context_instance=RequestContext(request))
I am now working on a system using the Django framework. I am writing the user login part. It seems successful but it doesn't work very well.
- The login system can recognise the user by his/her username and password.
- The authentication could only last for one "webpage". When I loaded another page or even reloaded the page, django can't get the info of the user(seems logged out)
- If I looked at the page resources, I saw a session number made after the login process.
What should I do to ensure only one login is needed? And keep my user logged in during the whole process?
Here is my view file
from django.shortcuts import render from django.http import HttpResponse,HttpResponseRedirect from django.template import RequestContext, loader from django.shortcuts import render from django.contrib.auth.decorators import login_required from django.contrib.auth import authenticate, login, logout from django.shortcuts import render_to_response,redirect from django.template import RequestContext from django.views.decorators.csrf import csrf_exempt from django.template.context_processors import csrf from . import models from . import form as f from django.contrib.sessions.backends.db import SessionStore def index(request): if request.user != None : template = loader.get_template('index.html') return HttpResponse(template.render(None)) else : return HttpResponseRedirect('/PDT/login_failed') def Home(request): template = loader.get_template('Home.html') return HttpResponse(template.render(None)) def loggin_in(request): c = {} c.update(csrf(request)) return render_to_response('login.html', c) def login_user(request): logout(request) username = password = '' if request.POST: username = request.POST.get('username','') password = request.POST.get('password','') user = authenticate(username=username, password=password) if user is not None: if user.is_active: login(request, user) request.session['username']=user.username return HttpResponseRedirect('/PDT/logged_successful') return HttpResponseRedirect('/PDT/inactive') return HttpResponseRedirect('/PDT/incorrect') return HttpResponseRedirect('/PDT/login_failed') def logged_in(request): if request.user : return render_to_response('index.html',{ 'user' : request.user },context_instance=RequestContext(request)) else : return HttpResponseRedirect('/PDT/login_failed') def login_failed(request): return render_to_response('problem.html',{ 'message' : "Login failed" }) def log_out(request): request.session.flush() logout(request) return render_to_response('problem.html',{ 'message' : "Logged out" }) def inactive(request): return render_to_response('problem.html',{ 'message' : "Inactive" }) def incorrect(request): return render_to_response('problem.html',{ 'message' : "Incorrect Username or Password" }) def iter_update(request): if request.session['username'] != None : return render_to_response('iter_update.html',{ 'user' : request.user },context_instance=RequestContext(request)) else : return HttpResponseRedirect('/PDT/login_failed') def Create_form(request): if request.method == "POST": form = f.ProjectForm(request.POST) if(form.is_valid()): print(request.POST['title']) form.save() message = 'success' else: message = 'fail' return render_to_response('Create_form.html', {'message': message, 'user': request.user,}, context_instance=RequestContext(request)) else: return render_to_response('Create_form.html', {'form': f.ProjectForm()}, context_instance=RequestContext(request))
原文:https://stackoverflow.com/questions/33890467
更新时间:2022-05-06 12:05
最满意答案
删除“providers:[NgRedux]”,因为如果您已经在使用NgReduxModule,则不需要将NgRedux添加到您的提供者。
Remove "providers: [NgRedux]," as it is not needed to add NgRedux to your providers if you are already using NgReduxModule.
相关问答
更多-
在控制器内部,您使用小写注入服务“templateService”,但它在beforeEach函数内以大写形式注入。 可能会有所帮助。 Inside the controller you are injecting the service "templateService" using lowercase but it is injected in uppercase inside beforeEach function. May be it will help.
-
你可能会遵循一个旧的指南/教程http。 使用HttpClient ,您需要提供您想要返回的类型,实际上,您不需要.map使数据缩短代码。 get(email: string): Observable
{ const uri = `${this.baseUri}/customer/${email}`; //add your model here something like //return this.http.get 对我来说问题是我试图使用useClass而不是useValue ,可能是一个大错,但是很难学会它...;) { provide: NgRedux, useValue : mockRedux }是正确的用法而不是{ provide: NgRedux, useClass : mockRedux } beforeEach(done => { mockRedux = new MockRedux(mockState); const configure = (testBed: TestBed) = ...看起来客户端不是角度2服务。 如果是这种情况,那么你不能通过构造函数注入它。 看看它使用早期版本的角度2但它应该让你知道如何使它工作。 It looks like Client is not an angular 2 service. If that is the case, then you cannot inject it through the constructor. Take a look at this it uses an earlier version angular 2 but it sh ...我猜你必须从共享文件夹中输入文件名 import {GlobalsService} from '../../shared/global.service'; 代替 import {GlobalsService} from '../../shared'; I'm guessing you have to put file name from share folder import {GlobalsService} from '../../shared/global.service'; instead im ...无法解析MatDialogRef angular 4的所有参数(Can't resolve all parameters for MatDialogRef angular 4)[2022-02-05]
希望这有助于我拥有的东西: 组件: import { MatDialog } from '@angular/material'; import { DialogComponent } from './dialogs'; // component name of dialog can add multiple in here. @Component({ selector: 'yourComponent', templateUrl: './yourComponent.html' }) expo ...您的测试失败,因为您没有为测试模块提供路由器需要实例化的所有参数。 话虽如此,在单元测试中,不建议使用像Router这样的服务的实际实现。 一个更好的选择是制作一个这样的存根(我在这里为路由器中的一个函数添加了一个间谍,以演示如果你想检查某个函数是否在某个时刻调用过它会怎么做): class RouterStub { navigateByUrl = jasmine.createSpy('navigateByUrl'); } 然后在配置测试模块时: providers: [ ..., ...Angular 2 Jasmine错误:无法解析NgRedux的所有参数(Angular 2 Jasmine error: Can't resolve all parameters for NgRedux)[2023-07-17]
删除“providers:[NgRedux]”,因为如果您已经在使用NgReduxModule,则不需要将NgRedux添加到您的提供者。 Remove "providers: [NgRedux]," as it is not needed to add NgRedux to your providers if you are already using NgReduxModule.您的DataService服务有两个构造函数参数url和http 。 http可以解析,因为它是由HttpClientModule注册的,但是url参数没有在依赖注入容器中注册。 这就是你得到错误的原因。 我想你总是让注入一个特定的类,例如UserDataService到你的组件中,而不是一个DataService实例。 所以你应该将DataService重构为一个抽象的DataServiceBase类并删除@Injectable()装饰器。 正如yurzui所建议的那样,从提供者列表中删除DataServ ...Angular 2:无法解析AppComponent的所有参数(Angular 2: Can't resolve all parameters for AppComponent)[2022-02-22]
import {ModalService} from "./modal.module"; 应该 import {ModalService} from "./modal.service"; import {ModalService} from "./modal.module"; should be import {ModalService} from "./modal.service";相关文章
更多- vicalloy的我与django
- [置顶] Django 微信开发(一)——环境搭建
- Django资源汇总(转)
- Django下载及安装
- Haystack - Search for Django
- javascript 中定义名为login的函数怎么没有用
- Django and full-text search
- 分享:django-haystack+solr实现搜索
- 分享:django-haystack+solr实现搜索
- django-haystack+solr实现搜索
最新问答
更多- 获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
- 如何通过引用返回对象?(How is returning an object by reference possible?)
- 矩阵如何存储在内存中?(How are matrices stored in memory?)
- 每个请求的Java新会话?(Java New Session For Each Request?)
- css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
- 无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
- xcode语法颜色编码解释?(xcode syntax color coding explained?)
- 在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
- 从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
- 从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
- 西安哪有PLC可控制编程的培训
- 在Entity Framework中选择基类(Select base class in Entity Framework)
- 在Android中出现错误“数据集和渲染器应该不为null,并且应该具有相同数量的系列”(Error “Dataset and renderer should be not null and should have the same number of series” in Android)
- 电脑二级VF有什么用
- Datamapper Ruby如何添加Hook方法(Datamapper Ruby How to add Hook Method)
- 金华英语角.
- 手机软件如何制作
- 用于Android webview中图像保存的上下文菜单(Context Menu for Image Saving in an Android webview)
- 注意:未定义的偏移量:PHP(Notice: Undefined offset: PHP)
- 如何读R中的大数据集[复制](How to read large dataset in R [duplicate])
- Unity 5 Heighmap与地形宽度/地形长度的分辨率关系?(Unity 5 Heighmap Resolution relationship to terrain width / terrain length?)
- 如何通知PipedOutputStream线程写入最后一个字节的PipedInputStream线程?(How to notify PipedInputStream thread that PipedOutputStream thread has written last byte?)
- python的访问器方法有哪些
- DeviceNetworkInformation:哪个是哪个?(DeviceNetworkInformation: Which is which?)
- 在Ruby中对组合进行排序(Sorting a combination in Ruby)
- 网站开发的流程?
- 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
- 条带格式类型格式模式编号无法正常工作(Stripes format type format pattern number not working properly)
- 透明度错误IE11(Transparency bug IE11)
- linux的基本操作命令。。。