在完成了Django的Hello World之后,下面开始进行一些基础的配置。
打开主项目下的settings.py
文件
首先找到TEMPLATES
,该列表存放的是一些静态文件相关的内容。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
'builtins': ['django.templatetags.static'], #增加的一行
},
},
]
其中当APP_DIRS
是True
的时候,Django会去找templates
文件夹下面的子app文件
其中新增了一行builtins
: A list of dotted Python paths of template tag modules to add to built-ins.
它的作用是:Tags and filters from built-in libraries can be used without first calling the {% load %}
tag.
具体每个参数的学习可以查阅:
https://docs.djangoproject.com/zh-hans/2.1/topics/templates/
因为本地装了一个mysql数据库,所以就捡现成的好了。
数据库配置 如图所示
mysql -uroot -p123456
其中123456是数据库密码CREATE DATABASE Zxapitest CHARSET=utf8;
zhongxin
,密码为123456
的用户GRANT ALL PRIVILEGES ON Zxapitest.* TO 'zhongxin'@'%';
把数据Zxapitest
授权给zhongxin
用户FLUSH PRIVILEGES;
为了不重启数据库服务,就需要刷新权限。这样就可以使用zhongxin用户访问Zxapitest数据库了。使用数据库可视化工具就可以进行数据库连接的测试了
使用的账号是zhongxin
密码是123456
连接测试 可以看到连接成功了
连接结果
下面是在Django中进行配置: 找到默认的数据库连接配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
这个是使用的自带的sqlite3
,我不会用,所以删了它,将它改为我们的mysql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'Zxapitest', # 数据库名称
'USER': 'zhongxin', # 数据库登录用户名
'PASSWORD': '123456', # 密码
'HOST': '127.0.0.1', # 数据库主机IP,如保持默认,则为127.0.0.1
'PORT': 3306, # 数据库端口号,如保持默认,则为3306
}
}
当然这个操作非常的危险,如果真实项目肯定要耍点手段把它隐藏起来,毕竟数据库密码暴露在外面,谁知道哪天被脱库。 接下来在需要导入pymysql
导入pymysql
把时区相关的内容改为中国地区~
1# 修改语言
2LANGUAGE_CODE = 'zh-hans'
3# 修改时区
4TIME_ZONE = 'Asia/Shanghai'
5
6USE_I18N = True
7
8USE_L10N = True
9# utc 时间
10USE_TZ = True
在项目根目录中创建一个static目录,用于存放静态文件(css、js、image、font等)
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'), # 用于存放静态文件
]
由于我现在只有一个模糊的目标,所以具体需要多少个应用还没想过,但是不管怎么样,登录功能总是需要的。我们就先创建一个登录好了。
找到Tools下的Run manage.py Task...
创建应用
输入startapp login
进行应用的创建
startapp login 可以看到文件结构里面多了一个login的文件夹
因为以后不出意外肯定有很多应用要创建,所以创建一个文件夹apps
,再把login
这个文件夹拉进去
移动文件夹
下面进入settings.py
文件,在上面(BASE_DIR
这个变量的后面)添加如下几行:
1import sys
2
3# 创建应用之后,把apps目录加入到sys.path中
4sys.path.insert(0, BASE_DIR)
5sys.path.insert(1, os.path.join(BASE_DIR, 'apps'))
分别在apps文件夹和项目根目录文件夹上右击,加入到Sources Root根中,优化导入路径。
优化导入路径
最后找到INSTALLED_APPS
列表,在最后加入login
1INSTALLED_APPS = [
2 'django.contrib.admin',
3 'django.contrib.auth',
4 'django.contrib.contenttypes',
5 'django.contrib.sessions',
6 'django.contrib.messages',
7 'django.contrib.staticfiles',
8 'login'
9]
由于前端技术太渣,所以直接百度找人家写好的代码好了。
前端广告 这个看上去就不错,那就拿了。 地址:
https://themequarry.com/theme/my-login-bootstrap-4-login-page-snippet-ASFEDAB1
前端代码结构 下载之后是这一堆东西。我们把他们拉到项目里面去,注意一定要拉进去,这样Pycharm会帮我们该掉里面的一些相对路径。
对应
先修改index.html
文件
在文件的第一行加上:{% load static %}
找到bootstrap, css, img, js相关的代码进行修改
加上{% static ' ' %}
例如:
1<link rel="stylesheet" type="text/css" href={% static 'bootstrap/css/bootstrap.min.css' %}>
下面开始测试
打开apps/login/views.py
写入:
1def index(requests):
2 return render(requests,'login/index.html')
这样访问的时候就会渲染index.html页面
在app/login
下新建urls.py
文件写入:
1from django.urls import path
2from . import views
3
4app_name = 'login'
5
6urlpatterns = [
7 path('',views.index)
8]
这样访问ip:端口就会调用index
函数
最后找到主路径下的urls:Zxapitest/urls.py
写入:path('',include('login.urls'))
1from django.contrib import admin
2from django.urls import path, include
3from login import views
4
5urlpatterns = [
6 path('admin/', admin.site.urls),
7 path('',include('login.urls'))
8]
运行测试:
测试
这样一个花架子就搭建好了,具体实现下一篇再写了。