Ios 发生网络连接故障
错误: 在中找不到/login\u或注册密钥“name”处的多值DictKeyError 没有提到任何行号或页面,只提到Django设置文件中的页面(不是我的代码) 这段iOS代码失败Ios 发生网络连接故障,ios,objective-c,django,facebook,facebook-ios-sdk,Ios,Objective C,Django,Facebook,Facebook Ios Sdk,错误: 在中找不到/login\u或注册密钥“name”处的多值DictKeyError 没有提到任何行号或页面,只提到Django设置文件中的页面(不是我的代码) 这段iOS代码失败 //Now pass this to our login NSURL *url = [NSURL URLWithString:BASE_URL]; AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
//Now pass this to our login
NSURL *url = [NSURL URLWithString:BASE_URL];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
name, @"name",
email, @"email",
fbid, @"fbid",
nil];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"/login_or_signup/" parameters:params];
NSLog(@"PARAMS %@", params);
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
//do something
}failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
// your failure code here
NSLog(@"FAILED %@", JSON);
}]
登录或注册视图代码:
@csrf_exempt
def login_or_signup(request):
user = False;
username = False;
email = "tmp@app.com"
password = "tmppass"
displayname = request.POST['name']
fbid = request.POST['fbid']
#Do we already have this user?
if "email" in request.POST:
email = request.POST['email']
username = email
try:
user = User.objects.get(email=email)
except User.DoesNotExist:
pass
if fbid and not user:
username = fbid
try:
user_profile = UserProfile.objects.get(fbid=fbid)
user = user_profile.user
except UserProfile.DoesNotExist:
pass
if not user:
user = User.objects.create_user(fbid, email, password)
#tastypie api_key
api = ApiKey.objects.get(user=user)
#Update user_profile:
user_profile = user.get_profile()
user_profile.username = displayname
user_profile.fbid = fbid
user_profile.save()
dic = list()
dic.append({
'username':user_profile.username,
'user_profile_id':user_profile.id,
'fbid':fbid,
'api_username':user.username,
'api_key':api.key
})
return HttpResponse(simplejson.dumps(dic, cls=DjangoJSONEncoder), mimetype='application/json')
一些方便的iOS代码
- (void)request:(FBRequest *)request didLoad:(id)result {
//Loading details about this FB user. Send the details to Web App and create and/or login this user.
NSLog(@"FACEBOOK RESULT %@ ", result);
NSString * fbid = [result objectForKey:@"id"];
NSString * email = [result objectForKey:@"email"];
NSString * name = [result objectForKey:@"name"];
[self loginOrSignup:name email:email fbid:fbid];
}
另外请注意,上面的NSLog确实有效,我可以看到id、电子邮件、姓名等
它被发送到loginorsignup iOS方法,该方法通过AFNetworking联系url
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^upload/', 'image.views.upload_file'),
url(r'^login_or_signup', 'image.views.login_or_signup'),
url(r'^api/', include('v1_api.urls')) // mark the quotes
)
如果您的URL顶部没有django.contrib import admin的
,请在admin.site.url上使用引号。py发布错误消息仅呈现500.html页面如果您将DEBUG
设置为True
,您应该会得到更详细的错误页面谢谢。在/login\u或\u注册键“name”处未找到多值DictKeyError。是否可以包含登录或注册视图的视图代码?问题已从简单的url修复更改为处理多值DictKeyError。很抱歉,在我发布之前,我没有重新加载页面来更新。这很好:)你知道更新的问题出了什么问题吗?你能从你的500页中发布更多信息吗?当我能看到整个stacktrace时就容易多了。它为您提供了有关哪一行失败的线索