Django学习记录第二上—UserProfile

距上一样篇Django第一上已经过去了65龙,并无是当中放下了,只是没有想吓怎么去描绘,今天重新开始,希望得以坚持下来。加油!

及同样篇环境什么的我们都长建筑好了,接下给咱们运行我们先是个程序。
立是咱创建好后底界面。

First Porject.png

咱才待点击三角就得运行,或者点击run按钮就好运作。
然我们运行看效果。

run

我们前进至网址http://127.0.0.1:8000/ 看看效果。

127.0.0.1:8000

欢迎你,来到了Django的世界。

而后我们要召开什么啊,我们要创造我们的app。

run manager

接下来我们惟有待输入startapp [appname]

image.png

下一场我们即便足以发现我们多矣一个文书夹

image.png

为方便管理我们创建apps文件管,然后拖入到内部。

image.png

旋即无异于片做截止之后,我们用拿app加入到settings中。

为了方便使用apps,我们以那个安为Source Root

然后在settings中设置
import sys
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))

这么咱们于进入settings的时偏偏需要写副users即可。

image.png

顺便说一样句子,创建python package
会比创directory多因为__init__.py的文本。文件夹下面多一个__init__.py文件证明及时是一个python包。

当今我们用事先安排我们的数据库。数据库,我们需要在settings中安装。settings中有一个曰DATABASE的地方。

mysql settings

不难看出,django默认用的是sqlite3。我们需要改变成为下面这样,因为咱们要利用mysql。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', #修改成mysql
        'NAME': 'DatabaseName',  #需要连接的数据库的名字
        'USER': ‘USERNAME’,  #安装mysql时的用户名
        'PASSWORD': ‘PWD’, #安装mysql时的密码
        'HOST': '127.0.0.1', #本地
    }
}

提拔一词,在创造数据库时,我们得专注少单地方,

  • Default Character Set 我们要用 utf8
  • Default Collation我们用utf8_general_ci。

utf8咱无说明了,因为要是配合中文,为什么使用utf8_general_ci文章说
中文的言语用utf8_general_ci,如果法语什么的用utf8_unicode_ci,恩,暂且相信吧。

OK,这样咱们的数据库算是配置好了,是无是蛮方便,接下我们实施以下makemigrations.
若果您这边报一个mysql的问题,like this

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

你得回到你的虚拟环境,安装一个MySQL-python

pip install MySQL-python

安装了之后该就从未问题了。
下一场我们实行migrate,然后你晤面发现,蹦出来多英文
还带来在0001等等的事物。这说明您的布局出错了,恩,这是单噱头,恭喜您成了,我们来拘禁一下数据库。
形成之后,我们见面意识差不多了好多表。
咱们来拘禁一下。

image.png

受咱来拘禁一下立几个说明底用

  • auth_group 暂时未知,预测是用来用户分组用底
    表内之id与name应该是用户id 与用户称
  • auth_group_permissions 暂时未知 猜测是用户组权限
  • auth_permission 这里面放的是具备的权能
  • auth_user 这里面放的凡用户信息,点开我们呢得看出,有username
    password等字段
  • auth_user_gourps 这里用户以及用户组的涉嫌
  • auth_user_user_permissions 每个用于所有的权
  • django_admin_log 与 django_content_type暂时无说
  • django_migrations 这里存放的是装有的连操作
  • django_session
    这个就立志了,这里存放的用户登录要的session,都见面加大于马上之中。

连片下去做什么啊,我们要创造我们的最佳用户。
还是,进入及我们的manager.py Task里面,执行

createsuperuser #填写你的username Email Password即可

缔造好后,我们得以来django的后天看一下。
来到http://127.0.0.1:8000/admin/
输入才的username 与 password我们即便可上后台了,like this.

image.png

OK,数据库看罢后,我们尽管用专业提一下UserProfile了。
第一说一下,为什么采取UserProfile,因为有时候我们见面发觉,系统被我们的user表里的字段无法满足我们的要求,比如:user表里从未address,birthday,gender等。如果我们得,我们不怕需创造我们的亲善之user。

第一回到我们才创建的users
app下。里面来一个models.py我们可以以我们需要之model写在其中。

image.png

第一为,我们用导入头文件。

from django.contrib.auth.models import AbstractUser

怎么我们需要导入AbstractUser呢,我们看一下User类就会见意识。

class User(AbstractUser):
    """
    Users within the Django authentication system are represented by this
    model.

    Username, password and email are required. Other fields are optional.
    """
    class Meta(AbstractUser.Meta):
        swappable = 'AUTH_USER_MODEL'

Django自带的User就是继承自是看似。
下一场来再次写我们协调的好像

class UserProfile(AbstractUser):
    nick_name = models.CharField(max_length=50, verbose_name=u'昵称', blank=True, null=True)
    birthday = models.DateField(verbose_name=u'生日', blank=True, null=True)
    address = models.CharField(max_length=100, verbose_name=u'地址', blank=True, null=True)
    age = models.IntegerField(verbose_name=u'年龄', blank=True, null=True)
    gender = models.CharField(max_length=10, choices=(('Female', u'女'), ('Male', '男')), verbose_name=u'性别', default='Male')
    image = models.ImageField(upload_to='images/%Y/%m', verbose_name=u'头像')

    class Meta:
        verbose_name = u'用户信息'
        verbose_name_plural = verbose_name

    def __unicode__(self):
        return self.username

此出几碰说明

  • CharField max_length必须填写
  • choices的使用
  • blank=True, null=True 是装允许为空
  • class Meta设置的是user里表的展示名称
  • __unicode__(self)设置的创办后出示的始末,py3是__str__(self)

关于更多Field设置可以来这里

一如既往,进入到我们的manager.py Task里面,执行

makemigrations users

此间你恐怕会见遇上这题目

ERRORS:
users.UserProfile.image: (fields.E210) Cannot use ImageField because Pillow is not installed.
    HINT: Get Pillow at https://pypi.python.org/pypi/Pillow or run command "pip install Pillow".

这儿我们要装一个曰Pillow的保证

pip install Pillow

然后咱们重新来施行。
然后你恐怕会见意识这么一个题材sqlite。

users.UserProfile.user_permissions: (fields.E304) Reverse accessor for 'UserProfile.user_permissions' clashes with reverse accessor for 'User.user_permissions'.
    HINT: Add or change a related_name argument to the definition for 'UserProfile.user_permissions' or 'User.user_permissions'.

卿要在settings中添加这么一词话。

AUTH_USER_MODEL = 'users.UserProfile'

再也来执行省。
bingo, 成功。然后实施

migrate users

咱俩要输入一个yes。然后成功。

咱来拘禁一下数据库。刷新可以望我们大多了三张表。

image.png

开辟看一下无问题!OK,UserProfile就写道这里了,下次看看xadmin。

自我的上总结,争取坚持30上
网站地图xml地图