教程来源:http://zmrenwu.com
项目是基于django自带的auth模块来认证的,查看AbstractUser模块源码,发现有username,firestname,last 和email,不够用,所以我们继承这个类,
加上一个nickname属性
设置完默认使用的模块后,还要进行数据库迁移
$ python manage.py makemigrations
$ python manage.py migrate
以上两条命令是django1.10版以上的。
一直很纠结上面两条数据库迁移命令。今天把默认的sqlite改为了mysql,更改settings文件后,使用两条命令就可以完成迁移了。而models里面的数据类型会在迁移完成后自动在数据库创建相应数据类型,所以不用操心。
理一下开发顺序: 首先我们需要注册的表单页面上的内容是 用户名+密码+确认密码+邮箱 而查看了django.contrib.auth.forms.UserCreationForm 自带的表单属性,发现里面只有 密码+确认密码 所以我们需要在user1底下创建一个forms.py文件来使原有继承auth.User变为继承user1.User,怎么实现呢?我们上一步已经把Uer模型扩展了,并且查看到里面有这几个field,所以通过from.modelsimportUser 就使得现在的表单变为继承user1.User的属性。接下来编写views视图逻辑,添加url,写html就好了。
一些使用pycharm的快捷键 shift+enter 从下一行重新开始,ctr + b 找到上一层代码 ctr+f 搜索,全部替换 超级好用
发送邮件的时候首先遇到
django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
需要配置环境变量 DJANGO_SETTINGS_MODULE 这个变量告诉django项目去找哪一个settings 文件。 具体的步骤:
1、Run --> EditConfigures ,找到python一项,然后修改里面的Environment variables 添加一项。名称是DJANGO_SETTINGS_MODULE 值是 你的项目是mysite就改成 mysite.settings 。
然后通过SMTP协议发送邮件失败,报错505或535
解决方法:http://blog.csdn.net/fjx1173865548/article/details/57084620
注意sender参数才是填的刚刚注册的邮箱。!
但是我还没有把他加到我的密码验证里,待研究。。
---------------------------------------------------------
以下是解决办法:
settings设置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False #SSl关闭
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = '1004636858@qq.com'
EMAIL_HOST_PASSWORD = '*******' #在qq邮箱里获取
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER #默认发送地址一定要填
这样就能收到邮件啦