Python Django应用程序中的TemplateSyntaxError
您好,我正在尝试使用Ajax使用django facebook connect为我的django应用程序实现facebook登录。我是按照这个链接来实现它的。在这样做时,我遇到了这个错误“TemplateSyntaxErrorat/registrationForm”/ “facebookconnect”不是有效的标记库:未找到模板库facebookconnect,已尝试django.templatetags.facebookconnect,django.contrib.admin.templatetags.facebookconnect,facebookconnect.templatetags.facebookconnect”。我将在这里粘贴我的错误日志。环境:Python Django应用程序中的TemplateSyntaxError,python,django,django-models,facebook,django-templates,Python,Django,Django Models,Facebook,Django Templates,您好,我正在尝试使用Ajax使用django facebook connect为我的django应用程序实现facebook登录。我是按照这个链接来实现它的。在这样做时,我遇到了这个错误“TemplateSyntaxErrorat/registrationForm”/ “facebookconnect”不是有效的标记库:未找到模板库facebookconnect,已尝试django.templatetags.facebookconnect,django.contrib.admin.templat
Request Method: GET
Request URL: http://10.1.0.90:8080/registrationForm/
Django Version: 1.2.5
Python Version: 2.6.5
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'universityDetails',
'django.contrib.admin',
'captcha',
'facebookconnect',
'social_auth']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.csrf.CsrfResponseMiddleware',
'universityDB.FacebookConnectMiddleware.FacebookConnectMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'facebook.djangofb.FacebookMiddleware',
'facebookconnect.middleware.FacebookConnectMiddleware')
Template error:
In template /home/ravi/Desktop/universityDB/templates/registrationForm.html, error at line 75
'facebookconnect' is not a valid tag library: Template library facebookconnect not found, tried django.templatetags.facebookconnect,django.contrib.admin.templatetags.facebookconnect,facebookconnect.templatetags.facebookconnect
65 : <p style="clear:both;float:left;">
66 : <input type="submit" value="Log in" />
67 :
68 : <a HREF="http://10.1.0.90:8080/forgotPassword/">Forgotten your password?</a></p>
69 : </div>
70 : </form>
71 : <br>
72 :
73 : <p>Login via facebook!</p>
74 :
75 : {% load facebookconnect %}
76 : {% facebook_connect_login_button %}
77 :
78 : {% facebook_connect_script %}
79 :
80 :
81 :
82 : <br>
83 : <br>
84 : <br>
85 : <br>
Traceback:
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response
100. response = callback(request, *callback_args, **callback_kwargs)
File "/home/ravi/Desktop/universityDB/../universityDB/universityDetails/views.py" in registrationForm
50. return render_to_response("registrationForm.html")
File "/usr/local/lib/python2.6/dist-packages/django/shortcuts/__init__.py" in render_to_response
20. return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/template/loader.py" in render_to_string
181. t = get_template(template_name)
File "/usr/local/lib/python2.6/dist-packages/django/template/loader.py" in get_template
157. template, origin = find_template(template_name)
File "/usr/local/lib/python2.6/dist-packages/django/template/loader.py" in find_template
134. source, display_name = loader(name, dirs)
File "/usr/local/lib/python2.6/dist-packages/django/template/loader.py" in __call__
42. return self.load_template(template_name, template_dirs)
File "/usr/local/lib/python2.6/dist-packages/django/template/loader.py" in load_template
48. template = get_template_from_string(source, origin, template_name)
File "/usr/local/lib/python2.6/dist-packages/django/template/loader.py" in get_template_from_string
168. return Template(source, origin, name)
File "/usr/local/lib/python2.6/dist-packages/django/template/__init__.py" in __init__
158. self.nodelist = compile_string(template_string, origin)
File "/usr/local/lib/python2.6/dist-packages/django/template/__init__.py" in compile_string
186. return parser.parse()
File "/usr/local/lib/python2.6/dist-packages/django/template/__init__.py" in parse
282. compiled_result = compile_func(self, token)
File "/usr/local/lib/python2.6/dist-packages/django/template/defaulttags.py" in load
928. (taglib, e))
Exception Type: TemplateSyntaxError at /registrationForm/
Exception Value: 'facebookconnect' is not a valid tag library: Template library facebookconnect not found, tried django.templatetags.facebookconnect,django.contrib.admin.templatetags.facebookconnect,facebookconnect.templatetags.facebookconnect
我的facebookconnect.py是
from django import template
from django.conf import settings
from django.core.urlresolvers import reverse
register = template.Library()
class FacebookScriptNode(template.Node):
def render(self, context):
return """
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript"> FB.init("%s", "%s");
function facebook_onlogin() {
var uid = FB.Facebook.apiClient.get_session().uid;
var session_key = FB.Facebook.apiClient.get_session().session_key;
var expires = FB.Facebook.apiClient.get_session().expires;
var secret = FB.Facebook.apiClient.get_session().secret;
var sig = FB.Facebook.apiClient.get_session().sig;
fb_connect_ajax(expires, session_key, secret, uid, sig);
}
function fb_connect_ajax(expires, session_key, ss, user, sig) {
var post_string = 'expires=' + expires;
post_string = post_string + '&session_key=' + session_key;
post_string = post_string + '&ss=' + ss;
post_string = post_string + '&user=' + user;
post_string = post_string + '&sig=' + sig;
$.ajax({
type: "POST",
url: "%s",
data: post_string,
success: function(msg) {
window.location = '%s'; //.reload()
}
});
}
</script>
""" % (settings.FACEBOOK_API_KEY, reverse('xd_receiver'), reverse('facebook_connect_ajax'), settings.LOGIN_REDIRECT_URL)
def facebook_connect_script(parser, token): return FacebookScriptNode()
register.tag(facebook_connect_script)
class FacebookLoginNode(template.Node):
def render(self, context):
return "<fb:login-button onlogin='facebook_onlogin();'></fb:login-button>"
def facebook_connect_login_button(parser, token): return FacebookLoginNode()
register.tag(facebook_connect_login_button)
来自django导入模板的
从django.conf导入设置
从django.core.urlResolver反向导入
register=template.Library()
类FacebookScriptNode(template.Node):
def呈现(自身、上下文):
返回“”
FB.init(“%s”,“%s”);
函数facebook_onlogin(){
var uid=FB.Facebook.apiClient.get_session().uid;
var session_key=FB.Facebook.apiClient.get_session().session_key;
var expires=FB.Facebook.apiClient.get_session().expires;
var secret=FB.Facebook.apiClient.get_session().secret;
var sig=FB.Facebook.apiClient.get_session().sig;
fb_connect_ajax(过期、会话密钥、机密、uid、sig);
}
函数fb\u connect\u ajax(过期、会话密钥、ss、用户、sig){
var post_string='expires='+expires;
post_字符串=post_字符串+'&会话_键='+会话_键;
post_string=post_string+'&ss='+ss;
post_string=post_string+'&user='+user;
post_string=post_string+'&sig='+sig;
$.ajax({
类型:“POST”,
url:“%s”,
数据:post_字符串,
成功:功能(msg){
window.location='%s';//.reload()
}
});
}
“%”(settings.FACEBOOK\u API\u键、reverse('xd\u receiver')、reverse('FACEBOOK\u connect\u ajax')、settings.LOGIN\u REDIRECT\u URL)
def facebook_connect_脚本(解析器、令牌):返回facebook脚本节点()
register.tag(facebook\u connect\u脚本)
类FacebookLoginNode(template.Node):
def呈现(自身、上下文):
返回“”
def facebook_connect_login_按钮(解析器,令牌):返回facebook登录节点()
register.tag(facebook连接登录按钮)
您的facebook connect.py
文件必须位于模板标签
包中(它必须有一个\uuuu init\uuuuuuuuuuuuuu.py
才能成为包)
在您的
设置.INSTALLED_APPS
设置中,您添加了facebookconnect
,即使这不是一个应用(按目录结构)。相反,您应该将universityDB.universityDetails
列为应用程序。是facebookConnect.py
还是facebookConnect.py
?是facebookConnect.pywat应该是init.py文件的内容?facebookconnect.py在我的templatetags folderi中添加了universityDB.universityDetails到我安装的应用程序中,并在templatetags中添加了和init.py文件。现在我收到了这个错误“AlreadyRegistered at/registrationForm/The model University Details已经注册”听起来像是您以两种不同的方式导入models.py
,一种是老式的,另一种是绝对的。如果您通过绝对路径导入模块(例如,import universityDB.universityDetails.models
),然后通过旧样式导入模块(例如,在universityDB/universityDetails/views.py
中,您可以导入模型
),那么模块实际上将导入两次!别这样!我现在更改了..但仍有相同的旧错误..“facebookconnect”不是有效的标记库:未找到模板库facebookconnect,已尝试django.templatetags.facebookconnect,django.contrib.admin.templatetags.facebookconnect,facebookconnect.templatetags.facebookconnect”确保模块中没有语法错误或类似问题。打开shellpython manage.py shell
并导入您的模块:import universityDB.universityDetails.templatetags.facebookconnect
from django import template
from django.conf import settings
from django.core.urlresolvers import reverse
register = template.Library()
class FacebookScriptNode(template.Node):
def render(self, context):
return """
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript"> FB.init("%s", "%s");
function facebook_onlogin() {
var uid = FB.Facebook.apiClient.get_session().uid;
var session_key = FB.Facebook.apiClient.get_session().session_key;
var expires = FB.Facebook.apiClient.get_session().expires;
var secret = FB.Facebook.apiClient.get_session().secret;
var sig = FB.Facebook.apiClient.get_session().sig;
fb_connect_ajax(expires, session_key, secret, uid, sig);
}
function fb_connect_ajax(expires, session_key, ss, user, sig) {
var post_string = 'expires=' + expires;
post_string = post_string + '&session_key=' + session_key;
post_string = post_string + '&ss=' + ss;
post_string = post_string + '&user=' + user;
post_string = post_string + '&sig=' + sig;
$.ajax({
type: "POST",
url: "%s",
data: post_string,
success: function(msg) {
window.location = '%s'; //.reload()
}
});
}
</script>
""" % (settings.FACEBOOK_API_KEY, reverse('xd_receiver'), reverse('facebook_connect_ajax'), settings.LOGIN_REDIRECT_URL)
def facebook_connect_script(parser, token): return FacebookScriptNode()
register.tag(facebook_connect_script)
class FacebookLoginNode(template.Node):
def render(self, context):
return "<fb:login-button onlogin='facebook_onlogin();'></fb:login-button>"
def facebook_connect_login_button(parser, token): return FacebookLoginNode()
register.tag(facebook_connect_login_button)