问题1
执行 django-admin.py startproject FirstSite 时,没有正确返回结果,而是出现了startproject的用法说明:
Usage: django-admin.py subcommand [options] [args]
........
很明显,这就是没有识别出命令的参数,可以通过修改注册表解决
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command
把原来的"D:\Python32\python.exe" "%1"
修改为 "D:\Python32\python.exe" "%1" %*
问题2
在命令行输入 manage.py runserver,提示No module named django.core.management
我出现这个的原因,是因为同时安装了两个版本的python,然后卸载掉一个之后就恢复正常了
问题3
创建superuser时,输入的“yes” ,都提示输入非法,要我要么输yes要么输no,可我看来看去我都是正确的。。。
一番折腾之后终于解决了
D:\Python32\Lib\site-packages\django\contrib\auth\management\__init__.py
def create_superuser(app, created_models, verbosity, db, **kwargs):
from django.core.management import call_command
UserModel = get_user_model()
if UserModel in created_models and kwargs.get('interactive', True):
msg = ("\nYou just installed Django's auth system, which means you "
"don't have any superusers defined.\nWould you like to create one "
"now? (yes/no): ")
confirm = input(msg).rstrip('\r')
while 1:
if confirm not in ('yes', 'no'):
confirm = input('Please enter either "yes" or "no": ').rstrip('\r')
#input的后面追加上rstrip('\r'),过滤掉\r
continue
if confirm == 'yes':
call_command("createsuperuser", interactive=True, database=db)
break
通过调试发现,在cmd里面,input接受输入的时候,对于回车,只过滤了\n,没有过滤\t
所以输入的"yes"就变成了"yes\t",所以加上个过滤就好了。
同样的问题也出现在了其他地方,比如输入帐号邮箱的时候。
D:\Python32\Lib\site-packages\django\contrib\auth\management\commands\createsuperuser.py
在handle(self, *args, **options)方法里面
if default_username:
input_msg = "%s (leave blank to use '%s')" % (
input_msg, default_username)
#input后面增加rstrip,去除输入的字符串末尾\r字符
raw_value = input(force_str('%s: ' % input_msg)).rstrip('\r')
while user_data[field_name] is None:
raw_value = input(force_str('%s: ' % capfirst(force_text(field.verbose_name)))).rstrip('\r')