django 近期准备整合app之registration出错参考


django的app是一个应用级的东西,设计得好的话,可以整合到别的项目中去,目前在code.google.com上已经出现了很多的django app了,不仅仅在google上可以找到这些app,django的资源页上也罗列了很多的东西,http://code.djangoproject.com/wiki/DjangoResources ,有兴趣的可以自己去看看。
 
废话就不多说了,这里就写一点近期我使用registration的时候出现的一些错误吧,以供大家参考。
 
昨天下载并安装了registration,用python setup.py install 安装到了site-packages目录中去了,然后在我的工程中对settings.py和urls.py进行修改:
首先在INSTALLED_APPS中加入'registration',
然后在urls中加入一个 (r'^accounts/', include('registration.urls')),
 
在网页中加入一个用户注册的链接http://127.0.0.1:8000/accounts/register/,然后(做好一些模板,下载回来的doc目录下有说明)测试之,结果就发现我从google下回来的代码报错: ImportError at /accounts/register/
No module named validators
 

我的处理过程是:
 

把 settings和urls的修改改回去,这肯定是白搭,解决不了实际问题,回到原始而已
 

后来google找资料,没有这方面的东西.
 

我在registration的google站上看到说用的django最好是用subvison 签出的版本,所以说0.96的版本是不适用0.6的registration的,因此安装registration 0.6之前,我将我的0.96稳定官方发布给删除了,从django官网上下载了1.0的beta2版本,装好了之后,做了测试,就出现上面的错误
 

为了证实registration是不是使用了django的开发版的最新签出版,我就下载安装了一个subvision,用svn co http://code.djangoproject.com/svn/django/trunk/ 这个命令行签出了一个最新版本,签出完之后不知道怎么弄到site-packages目录中去,幸好在svn的目录下发现了setup.py,老办法dos命令行进入该目录,使用python setup.py install 安装了最新签出的django,完了之后,发现签出的版本是8802(get_version),我觉得这应该可以解决上面的问题了吧,运行服务器,还是老样子.
 

没有办法我只好用我的urltraedit看源代码了.
 

好在registrtion的源代码不多,搜索validators就可以找到在forms.py中找到了from django.core.validators import alnum_re,
 

但是我到我的django路径下的core目录下一看,根本就没有validators.py文件或者同名目录.这就奇怪了,registration还有脸说自己使用的是subvision的check out的版本,说这话是因为我后来在我的0.96的版本中发现了django/core/目录下有validators.py这个文件,但是1.0beta2和8802的签出版django均没有这个文件.
 

后来到django官方网站上搜索发现:
Removed oldforms, 
validators, and related code ¶ 

Committed in [8616].
 
  • Removed Manipulator, AutomaticManipulator, and related classes.
  • Removed oldforms specific bits from model fields:
    • Removed validator_list and core arguments from constructors.
    • Removed the methods:
      • get_manipulator_field_names
      • get_manipulator_field_objs
      • get_manipulator_fields
      • get_manipulator_new_data
      • prepare_field_objs_and_params
      • get_follow
    • Renamed flatten_data method to value_to_string for better alignment with its use by the serialization framework, which was the only remaining code using flatten_data.
  • Removed oldforms methods from django.db.models.Options class: get_followed_related_objects, get_data_holders, get_follow, and has_field_type.
  • Removed oldforms-admin specific options from django.db.models.fields.related classes: num_in_admin, min_num_in_admin, max_num_in_admin, num_extra_on_change, and edit_inline.
  • Serialization framework
    • Serializer.get_string_value now calls the model fields' renamed value_to_string methods.
  • Removed django.core.validators:
    • Moved ValidationError exception to django.core.exceptions.

 
 

网址是: http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges#Removedoldformsvalidatorsandrelatedcode
 

可见,0.6版的registration使用的根本不是用svn签出的django版本,可能是0.96版以前的.
 


registration的文件不是很多,如果急着用的话,自己修改相关的文件就可以了,把它变成自己的最好了.或者就干脆把0.96的django/core/目录下的validators.py复制到最新django的core目录中去,凑合着用吧.

我出于测试的目的,就还是等等吧,等到registration完善了我再用.

顺便说一句,国内目前对validators的涉及目前都是对 
Model API参考 的翻译,可能还是沿用了旧的django documention吧.我感觉实际中遇到的问题还是直接到官网中去找,或者发送邮件到邮件列表最好了. 

2008年9月26日补充:后来我使用svn版本的registration后,解决了这个问题。 

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值