Django搭建网站

一、前期软件安装

1、安装mysqlclint,可能会报错,在https://www.lfd.uci.edu/~gohlke/pythonlibs/上找到对应安装包下载之后安装;

二、前期配置

1、配置setting中的数据库:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'kefu',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1'
    }
}

2、新建数据库
选择utf8,排序方式选择genuarl_ci
3、生成自带数据表
新建user app
tools-run manage.py-makemigration-migrate-startapp name
4、自定义user表
自定义用户表中的字段:

from django.db import models
from django.contrib.auth.models import AbstractUser  # 用于自定义user表


class UserProfile(AbstractUser):
    nick_name = models.CharField(max_length=50, verbose_name='昵称', default='')

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

    def __str__(self):
        return self.username

进行最后一步migrate的时候可能会报错:

django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency users.0001_initial on database 'default'.

解决方案:删除除了user_auth之外的所有表,再重新运行。
5、把多个app放在apps文件夹之下,同时对apps做sourceroot操作,避免之前的引用失效。
6、把apps加入到搜索目录之下

import sys
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))

admin后台系统

1、建立超级用户
tools-run manege.py tesc-createsuperuser
创建完成之后,要记得再做一次makemigrations和migrate,来更改数据库,使新建的用户信息生效,否则,当你登录的时候会出现如下错误:

django.db.utils.ProgrammingError: (1146, "Table 'kefu.django_session' doesn't exist")

2、把后台管理系统设置成中文界面
在sitting中设置:

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = False

3、把用户信息表userprofile注册到组当中
在users.admin中:

from django.contrib import admin
from .models import UserProfile


class UserProfileAdmin(admin.ModelAdmin):
    pass

admin.site.register(UserProfile, UserProfileAdmin)  # 关联注册

4、安装xadmin
可以直接使用pip install xadmin,但是会报错,报错的话可以参考这篇文章:
报错解决方案

安装之后,在setting-app中加入最后两个:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'users',
    'xadmin',
    'crispy_forms',
]

之后修改url,再做一次migrate:

import xadmin
urlpatterns = [
    url(r'^xadmin/', xadmin.site.urls),
]

通过源码安装方式:
github下载zip文件,解压之后复制xadmin文件到代码主目录之下,然后新建extra_apps用来存放这种第三方的源码包,之后再做一次sourceroot,然后就可以删掉之前用pip安装的xadmin了:

pip unstall xadmin

5、切记一点要配置setting

import os
import sys

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))

每一次新建了一个pakeg之后,做了source root之后,还要做这一步操作,要不然运行manage.py的时候就会出现:

not found module xadmin

创建APP

1、使用run manage.py-startapp
2、创建model

class Shop(models.Model):
    name = models.CharField(max_length=50, verbose_name='店铺名称',default='')
    desc = models.CharField(max_length=300, verbose_name='店铺描述',default='')
    image = models.ImageField(upload_to='kefuaccount/%Y/%m', verbose_name='店铺logo',default='')

    class Meta:
        verbose_name = '店铺'
        verbose_name_plural = verbose_name

3、把app加入到setting中的app列表中

# 每一个新建的app都要在这里注册
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'users',
    'xadmin',
    'crispy_forms',
    'kefuaccount',
]

4、运行makemigration、migrate

model注册到后台管理系统

from .models import Shop, Account, SpiderRecord
import xadmin


class ShopAdemin(object):

    list_display = ['name', 'desc']  # 设置显示数据表中的所有字段
    search_fields = ['name', 'desc']  # 设置搜索字段
    list_fields = ['name', 'desc']  # 设置筛选字段

xadmin.site.register(Shop, ShopAdemin)

xadmin全局配置

1、更改标题,页面底部,伸缩栏
在users-adminx中

from xadmin import views


class GlobalSettings(object):
    site_title = '客服数据管理系统'
    site_footer = '丽人丽妆'
    menu_style = 'accordion'
xadmin.site.register(views.CommAdminView, GlobalSettings)

2、设置伸缩栏标题为中文
在每个app的apps中新增verbose_name:

class UsersConfig(AppConfig):
    name = 'users'
    verbose_name = '用户'

接着再_init_文件中增加一行:

default_app_config = 'users.apps.UsersConfig' 

配置首页和登录页面

setting配置

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {

配置url

from django.views.generic import TemplateView


urlpatterns = [
    url(r'^xadmin/', xadmin.site.urls),
    url('^$', TemplateView.as_view(template_name='index.html'), name='index'),
    url('^login/$', TemplateView.as_view(template_name='login.html'), name='login'),
]

然后更改html中静态文件的配置

你可能感兴趣的:(django)