Django - day00
0.写在最前面
第一次接触Django,是在大三的做数据库课程设计的时候,当时好像还是1.8的版本,现转眼就到了2.0的版本。
当时由于没太多的课,仅花了不到一周的时间就完成了作业,之间也使用了其它工具来尝试完成这个作业。
第一次是在imooc上简单学习的,后来由于实在搜不到啥中文资源,于是就疯狂刷文档,有问题就上*。
现在回头再看,学习的曲线之低,除了python语言的言简意赅,也得益于Django的框架简洁,让我只关注于逻辑的实现。
这次的重新学习,虽说是帮别人的忙,但也是有点自己的私心的,想借此机会能够重新认识一下Django,了解web服务器。
1. 关于环境的配置
1.1 安装的点滴
环境是Django+Python3.5+mysql
在环境搭建时需要使用python连接至mysql,在安装了mysql的情况下,需要配置mysqldb。若没安装,会出现如下错误提示
D:\workSpace\python\django_start>python manage.py runserver
...
Traceback (most recent call last):
File "D:\usr\Python35-32\lib\site-packages\django\db\backends\mysql\base.py",
line 15, in <module>
import MySQLdb as Database
ImportError: No module named 'MySQLdb'
The above exception was the direct cause of the following exception:
...
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
使用 pip install mysqlclient 安装即可,python2.*和3.*有异,这里不探究
About mysqlclient
python interface to MySQL
https://github.com/PyMySQL/mysqlclient-python
此时我的pip已安装目录为:
C:\Users\vincent>pip list --format=legacy
beautifulsoup4 (4.6.0)
certifi (2018.1.18)
chardet (3.0.4)
Django (2.0.4)
html5lib (1.0.1)
idna (2.6)
mysqlclient (1.3.12)
pip (9.0.3)
pytz (2018.3)
requests (2.18.4)
setuptools (28.8.0)
six (1.11.0)
urllib3 (1.22)
webencodings (0.5.1)
注意仅有一个mysqlclient
1.2 验证环境配置成功
一切就绪之后,由于Django默认是sqlite3,还需要配置数据库,配置如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_day_00',
'USER':'安装mysql时设置的账号',
'PASSWORD':'安装mysql时设置的密码',
'HOST':'localhost'
}
}
运行python manage.py runserver 即可
2. 跑一个页面
2.1 浏览器发送请求,需要设置响应的url:
#django_start\django_start\urls.py
from apps.message import views
urlpatterns = [
path('admin/', admin.site.urls),
path('login/', views.get_login),
]
2.2 url已经有了,需要设置映射的函数:
#django_start\apps\message\views.py
from django.shortcuts import render
def get_login(request):
return render(request,'message_login.html')
2.3 页面的资源设置
可以在每个单独的应用下建立一个static目录,也可以在根目录下建立一个static,在应用多的情况下,显然后者会更好。在根目录下建立一个static文件夹,设置找寻路径:
STATIC_URL = '/static/'
#新添加
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
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',
],
},
},
]
2.4 跑起来
浏览器中输入 http://localhost:8000/login/ 即可看到效果。