django

Last updated 13 days ago

Unknown command: 'syncdb' solution:(2016-2-9)

syncdb command is deprecated in django 1.7. Use the python manage.py migrate instead.

推荐一个较新版本的django中文文档

http://python.usyiyi.cn/django/intro/tutorial01.html

install django for python3

sudo pip3 install Django

if for python2

sudo pip install Django

1.9中的deprecated接口

https://docs.djangoproject.com/en/1.9/internals/deprecation/

django runserver, 停在performing System checking

检查引用的py模块中,是否有自动执行的语句。

比如views.py引用a.py,a.py中执行了一个死循环执行一些监听操作,views.py引用a.py时,就会去执行那段死循环,导致runserver卡住

在bat中运行python脚本不显示黑框

不用python,用pythonw

修改DB

python manage.py makemigrations module_name
python manage.py migrate

Syncdb

Django1.9中,不能使用syncdb,因为有了migration系统,使用makemigrations, migrate,代替之。

Session

Django的Session依赖于本地的数据库,使用Session前,需要执行makemigrations,migrate,Session才能正常工作。

Django migrate

migrate时,会去检查数据库里,django_migration表里执行的操作名,从而决定需要执行哪些migration,因此可以删掉这个表里的操作进行回退。

发邮件

  • 因为是服务端的问题所以也归在这里好了

  • 阿里云服务器上发邮件的时候,由于安全策略,必须使用SSL发邮件

  • 代码

    def send_163_mail(user, pwd, from_addr, to_addr, subject, content):
    msg = MIMEText(content)
    # 加邮件头
    msg['to'] = to_addr
    msg['from'] = from_addr
    msg['subject'] = subject
    # 发送邮件
    try:
    server = smtplib.SMTP_SSL('smtp.163.com', 465)
    server.starttls()
    server.set_debuglevel(1)
    server.login(user, pwd) # XXX为用户名,XXXXX为密码
    server.sendmail(msg['from'], msg['to'], msg.as_string())
    server.quit()
    print('发送成功')
    except smtplib.SMTPConnectError:
    print('SMTPConnectError')

多APP外键双向依赖

  • makemigrations和migrate时不指定app名,可以自动处理