在我的Django应用程序中,我需要在用户登录时开始运行一些定期后台作业,并在用户注销时停止运行它们,所以我正在寻找一种优雅的方式
从我的角度来看,理想的解决方案是
django.contrib.auth.views.login和... views.logoutdjango.contrib.auth.models.User.is_logged_in(),类似于... User.is_active()或... User.is_authenticated()Django 1.1.1没有那个,我不愿修改源代码并添加它(不知道如何做到这一点,无论如何).
作为临时解决方案,我is_logged_in在UserProfile模型中添加了一个布尔字段,该模型默认情况下已清除,在用户第一次访问登录页面(定义方式LOGIN_REDIRECT_URL = '/')时设置,并在后续请求中查询.我将它添加到UserProfile,因此我不必为此目的派生和定制内置用户模型.
我不喜欢这个解决方案.如果用户明确点击了注销按钮,我可以清除该标志,但大多数时候,用户只需离开页面或关闭浏览器; 在这些情况下清除旗帜对我来说似乎并不直接.此外(尽管数据模型的清晰度很明显),is_logged_in不属于UserProfile,而是属于User模型.
谁能想到替代方法?
我已将一堆用户及其数据导入到django项目中.我需要为每个人分配一个密码.是否有这样的片段用于密码生成,以应对Django哈希和盐?
当我从调试映射键切换到我签名的地图键时,我的地图停止工作.我在logcat中遇到以下错误:
09-03 18:18:04.112: WARN/System.err(4073): IOException processing: 26
09-03 18:18:04.112: WARN/System.err(4073): java.io.IOException: Server returned: 3
09-03 18:18:04.112: WARN/System.err(4073): at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
09-03 18:18:04.112: WARN/System.err(4073): at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473)
09-03 18:18:04.112: WARN/System.err(4073): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117)
09-03 18:18:04.112: WARN/System.err(4073): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994)
09-03 18:18:04.112: WARN/System.err(4073): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702)
09-03 18:18:04.112: WARN/System.err(4073): at java.lang.Thread.run(Thread.java:1019)
Run Code Online (Sandbox Code Playgroud)
我已经仔细检查了所有内容,权限和库已经到位.我重新创造了烧焦的钥匙而没有运气.
有任何想法吗?
为了在注册用户后对其进行签名,我手动设置了user.backend属性.它通常适用于我的观点.在这个例子中,我试图通过AJAX注册用户.它引发了一个AttributeError.
这是我的代码:
def register_async(request):
if request.method=='POST':
userform=MyUserCreationForm(request.POST)
if userform.is_valid():
#username of <30 char is required by Django User model. I'm storing username as a hash of user email
user=userform.save(commit=False)
user.username=hash(user.email)
user.backend='django.contrib.auth.backends.ModelBackend'
user.save()
auth.login(request,user)
user_status=1
user_fname=user.first_name
user_data=[{'user_status':user_status, 'user_fname':user_fname}]
json_data=json.dumps(user_data)
response=HttpResponse()
response['Content-Type']="text/javascript"
response.write(json_data)
return response
else:
user_data=[{'user_status':"0"}]
json_data=json.dumps(user_data)
response=HttpResponse()
response['Content-Type']="text/javascript"
response.write(json_data)
return response
else:
return HttpResponse()
Run Code Online (Sandbox Code Playgroud)
编辑 - 这里是AJAX.它看起来很漂亮
//ajax registration.
$('input#register_submit').click(function(event){
$(this).attr('disabled','disabled');
$('<div class="register-animation"><img src="{{site}}media/ajax-loader3.gif"/></div>').appendTo('#register_modal_btn');
$.post("/register/", $('div#register_side form').serialize(),
function(data){
$.each(data,function(){
if(this.user_status==1){
$('.register-animation').remove();
$('.right_section .top').html('<ul><li class="sep_nav">Hi, '+ this.user_fname + '</li><li class="sep+nav"><a href="http://nabshack.com/logout/">Log …Run Code Online (Sandbox Code Playgroud) 我想知道如何在JavaScript中获取当前用户的名称作为HTML文档的一部分.
在Java中,可以键入System.getProperty("user.name");以实现此目的.在JavaScript中有什么替代方案?
在Django的ModelAdmin中,我需要显示根据用户拥有的权限定制的表单.有没有办法将当前用户对象放入表单类,以便我可以在其__init__方法中自定义表单?
我认为在本地线程中保存当前请求是可能的,但这将是我的最后手段,我想我认为这是一个糟糕的设计方法....
我正在创建自己的bash脚本,但我现在卡住了.基本上,该脚本将用于自动化CentOS中的服务器设置.某些软件通常会要求用户输入密码.我希望脚本将我生成并存储的密码作为变量而不是询问用户.
当安装过程中出现"新密码:"消息时,如何让脚本将值存储在变量中$key,就像用户使用bash脚本键入它一样?
我正在使用ASP.NET Web API的单元测试编写测试用例.
现在我有一个动作调用我在服务层定义的一些方法,在那里我使用了以下代码行.
string username = User.Identity.Name;
// do something with username
// return something
Run Code Online (Sandbox Code Playgroud)
现在我如何为此创建单元测试方法,我得到空引用异常.我是一个新的编写单元测试和东西.
我想仅为此使用单元测试.
请帮我解决这个问题.谢谢.
请参阅以下代码:
public abstract class Base
{
public virtual void Foo<T>() where T : class
{
Console.WriteLine("base");
}
}
public class Derived : Base
{
public override void Foo<T>()
{
Console.WriteLine("derived");
}
public void Bang()
{
Action bang = new Action(delegate { base.Foo<string>(); });
bang(); //VerificationException is thrown
}
}
Run Code Online (Sandbox Code Playgroud)
new Derived().Bang();抛出一个例外.在Bang我生成的方法生成的CIL里面:
call instance void ConsoleApp.Derived::'<>n__FabricatedMethod1'<string>()
Run Code Online (Sandbox Code Playgroud)
和编译器生成方法的签名:
method private hidebysig
instance void '<>n__FabricatedMethod1'<T> () cil managed
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = (
01 00 00 00
) …Run Code Online (Sandbox Code Playgroud) django ×4
username ×3
.net ×2
android ×1
asp.net ×1
bash ×1
c# ×1
cil ×1
delegates ×1
django-admin ×1
django-forms ×1
emulation ×1
google-maps ×1
html ×1
identity ×1
input ×1
javascript ×1
key ×1
linux ×1
login ×1
passwords ×1
python ×1
signals ×1
signed ×1
sysadmin ×1
ubuntu ×1
unit-testing ×1
user-input ×1