2、静态文件配置
一、静态文件
我们将html文件默认都放在templates文件夹下,
将网站所使用的静态文件默认都放在static文件夹下
静态文件就是前端写好的,能够直接使用的文件,如网站写好的js文件,css文件,图片文件以及第三方前端框架Django默认是不会自动帮你创建static文件夹,需要你自己手动创建,一般情况下我们在static文件夹内还会做进一步的划分处理,如下
-static
--js
--css
--img
--以及其他第三方文件
# 我们把网站用到的图片、CSS、JS文件 分类处理,这样清晰明了,解耦合
二、静态文件配置
首先我们在templates文件夹创建一个HTML文件,编写一个登陆功能
<form action="">
<p>用户名:<input type="text" name="username" class="form-control"></p>
<p>密码:<input type="text" name="password" class="form-control"></p>
<input type="submit" value="登录" class="btn-success">
</form>
然后在views.py和urls.py开放这个资源接口
def login(request):
return render(request, 'login.html')
#################################################
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/', views.login),
]
启动项目,在url后缀输入/login/进入我们编写的登录页面,如下图,可以看出界面没有任何样式

我们现在有一个CSS文件可以为我编写的HTML文件添加样式,该怎么办呢?

我们需要找到settings文件,拉到最下面会看到
STATIC_URL = '/static/'
我们在它下面写上静态文件配置
STATIC_URL = '/static/'
# 静态文件配置
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'),
]
"""
这个代码可以开放static文件下的路径,给前端访问
"""
然后我们回到login.html文件在head标签内将css文件引入
<head>
<link rel="stylesheet" href="/static/css/bootstrap.min.css">
</head>
再去看看界面是不是好看了一点

三、动态解析文件
假如有一天,突然有个需求,就是 settings文件的STATIC_URL要改名,改成STATIC_URL = '/yyy/'或者STATIC_URL = '/zzz/',反正就不是原来的名字了,这下子出事了!接口的前缀名变了,HTML文件找不到了,可这咋整啊!
有两种办法,
1、手动改每个地方的路径,万一有几百个需要改的,累死你
2、用模板语法的方式动态地解析静态文件,
{% load static %}
<link rel="stylesheet" href="{% static '/css/bootstrap.min.css' %}">
{% load static %}是啥意思,就是获取STATIC_URL后面的路径,无论你改成什么它都知道
现阶段小tips:
我现在使用django提交post请求的使用,经常会报错,此时对于处于刚学习django阶段的我们还没有解决这个问题的能力,只需要记住找到配置文件里的中间件,把其中一行注释掉就行了
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',这条注释掉
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
这样就能暂时解决报错问题,在后面对django地深入学习后会回头来解决这个问题的
四、PyCharm链接数据库
以mysql演示,在右上方或者左下方找到database按钮,第一次使用需要按download下载插件,下载完以后点test connection,输入你的mysql账号密码然后再登录就能进去了,使用时先测试连接,确认没有问题再应用

五、Django连接数据库
因为Django默认使用的是sqlite3,我们要改成mysql,第一步先找到settings文件中的DATABASE,然后改成
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '数据库的名称',
'USER': 'root(用户名)',
'PASSWORD': '你的密码',
'HOST': '127.0.0.1',
'PORT': 3306,
'CHARSET': 'utf8'
}
}
这样弄完虽然完成了,但是还不够,我们一运行就会发现问题了,他会报错说:No module named 'pymysql',由于django默认用的是mysqldb模块链接MySQL,但是该模块的兼容性不好,需要手动改为用pymysql链接,我们要在项目名下或者任意应用名下的_init_.py中写下以下代码
import pymysql
pymysql.install_as_MySQLdb()
django 2.0.7版本之后,pymysql源码不兼容,建议使用mysqlclient,什么都不用配置,可以直接用,不需要在init里写上面的代码,卸载掉pymysql安装mysqlclient就可以了

浙公网安备 33010602011771号