1.设计app,根据前端设计数据库app
2.新建虚拟环境,安装django,mysqlclient等库,打开编辑器选择虚拟环境,新建项目名称。
3.配置setting中的database,
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'tgwblog',
'USER': 'root',
'PASSWORD': 'cptbtptp',
'HOST': '127.0.0.1',
}
}
navicate中新建数据库(utf8,genaral_ci),迁移数据库(tools, run manage.py task,makemigrations,migrate)。
4.新建app (run manage.py task,startapp),setting中注册app,重载setting方法
AUTH_USER_MODEL = "users.UserProfile"
5.设计models,(django自带表可以继承,字段为如图)
第一行加utf8编码
# _*_ encoding:utf-8 _*_
from django.contrib.auth.models import AbstractUser #继承字段
model写完了,继承的要重载unicode方法。最后向admin注册model,用xadmin作为后台管理(也可以用simpleui比xadmin好用),创建管理员createspueruser,设置后台中文如下
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
当安装xadmin失败:
(1.当python2.7,django<2.0时:
安装xadmin失败,因为README.rst导致的,github下载https://github.com/sshwsfc/xadmin源码,将README.rst内容删除为空白。再安装即可。)
(2.当python3.6,django>2.0时可以:寻找对应的xadmin,所以我们需要安装xadmin==2.0.1版本。首先我们先去github上下载xadmin==2.0.1的zip文件。(源码包)。
下载地址:sshwsfc/xadmin
源码安装请学习https://blog.csdn.net/xujin0/article/details/84583969,安装完之后要迁移数据库!)
将xadmin,crispy_forms(注意下划线)和注册到app中,并迁移数据库。
把urls中admin替换掉
from django.contrib import admin
from django.urls import path
import xadmin
urlpatterns = [
path('xadmin/', xadmin.site.urls),
]
1常规model注册admin如下:
from .models import UserProfile,EmailVerifyRecord,Banner
class UserProfileAdmin(admin.ModelAdmin):
pass
class EmailVerifyRecordAdmin(admin.ModelAdmin):
pass
class BannerAdmin(admin.ModelAdmin):
pass
admin.site.register(UserProfile,UserProfileAdmin)
admin.site.register(EmailVerifyRecord,EmailVerifyRecordAdmin)
admin.site.register(Banner,BannerAdmin)
2将model注册xadmin如下:
1.在app下新建adminx.py文件
写入:
from .models import UserProfile,EmailVerifyRecord,Banner
import xadmin
class UserProfileAdmin(object):
pass
class EmailVerifyRecordAdmin(object):
pass
class BannerAdmin(object):
pass
xadmin.site.register(UserProfile,UserProfileAdmin)
xadmin.site.register(EmailVerifyRecord,EmailVerifyRecordAdmin)
xadmin.site.register(Banner,BannerAdmin)
其中继承字段会导致注册失败:
项目中使用了xadmin, 并且我的UserProfile 继承了django 自带的User,并重写了一些字段
:The model UserProfile is already registered
解决办法:
1.xadmin.site.unregister(UserProfile) #注销
2.xadmin.site.register(UserProfile, UserProfilesAdmin) #重新注册
3.makemigrations xadmin
4.migrate xadmin
6.编辑html,设计view,设计urls(路由),配置setting(ALLOWED_HOSTS = ['*'])。
1.拷贝html,新建template目录,static静态文件目录。
2.配置路由urls处理静态文件:
urls.py:
from django.views.generic import TemplateView
import xadmin
path('xadmin/', xadmin.site.urls),
path('', TemplateView.as_view(template_name="index.html"), name="index"),
3.配置setting
末尾加:
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
4.改html中的静态文件(css,js)路径
1,配置首页跳转路径,配置静态文件相对路径(要在html中加载loadstaticfiles)
<!doctype html>
<html>
{% load staticfiles %}
<head>
.........
<link href="{% static 'css/base.css' %}" rel="stylesheet">
<link href="{% static 'css/m.css' %}" rel="stylesheet">
<script src="{% static 'js/jquery-1.8.3.min.js' %}" ></script>
<script src="{% static 'js/comm.js' %}"></script>
...
<li><a href="{% url 'index' %}">首页</a></li>
验证码库,github搜索:django-simple-captcha框架(版本0.4.6)下载及用法在github往下拉,表单提交要加csrftoken
9.完善。