在上一章Django实践(三)房贷计算器中,我们理顺了相关的知识结构和开发步骤,那么我们现在开始。
1. 建立Django项目:
参考内容“全能”选手—Django 1.10文档中文版Part1
$ django-admin startproject mysite
建立项目,大概是这个样子(我的文件夹名称设为fdsite):
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
进入mysite目录,确保与manage.py文件处于同一级,输入下述命令:
$ python manage.py startapp apartment
系统会自动生成 apartment目录,其结构如下:
apartment/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
这个是app的意思,简单理解来说就是在项目框架下要实现一些功能最好单独设置app,1个app解决一个功能模块是坠吼的。
2. 编写视图views.py
在apartment/views.py文件中,输入下列代码:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the apartment index.")
为了调用该视图,我们还需要编写urlconf。现在,在apartment目录中新建一个文件,名字为urls.py,在其中输入代码如下:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
下一步是让项目的主urls文件指向我们建立的apartment这个app独有的urls文件,你需要先导入include模块,打开mysite/urls.py文件,代码如下:
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^', include('apartment.urls')),
url(r'^admin/', admin.site.urls),
]
3. 初步测试
下面我们启动一下服务器看看效果:
进入mystie目录,输入下面的命令:
$ python manage.py runserver
进入网址:http://127.0.0.1:8000/
如果你看到下面这个,就算是初步成功了(我的Django版本是1.11,不同版本的命令差别应当不大)
4. 建立数据结构(用来存储参数)
虽然在这个项目中,我们预期不会非常依赖数据库的功能,但我们依然需要建立数据结构来简化我们的项目。
当未来我们的房贷计算器出现一些变化,诸如利率(rate)等改变了,我应当有办法便捷的改变他的数值,而不是苦哈哈的在代码里面改A = B,如果我们在迭代的时候还要顾及到参数问题,那我们还不如不要开发的好。
将参数储存在数据库里还有另一个好处,未来我们可以设置默认值来简化用户的操作。
- 建立数据库MySQL
在PowerShell里进入MySQL
$ mysql -u root -p
password
$ create databas fddata;
Query OK, 1 row affected (0.01 sec)
成功建立空的数据库fddata
- 配置数据库到MySQL
打开mysite/settings.py配置文件。
把刚才我们建立的app配置进去,后面那个先不要在意:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#增加项目
'apartment',
# 'bootstrap3',
]
模板的地址配置一下,早晚会用到:
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',
],
},
},
]
数据库的配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'fddata',
'USER': 'root',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '3306',
}
}
语言和时区改一下
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
最后添加一段静态文件的地址信息吧,以后可能会用到
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'),
]
MEDIA_DIR = os.path.join(BASE_DIR, 'media')
#MEDIA_ROOT用来告诉Django你的上传文件保存在电脑的哪个位置
MEDIA_ROOT = MEDIA_DIR
#第一个变量MEDIA_URL定义了基地址.如果把MEDIA_URL设置为/media/意味着上传URL为http://127.0.0.1:8000/media/
MEDIA_URL = '/media/'
最后我们在运行一下runserver,如果一切正常则证明我们的配置是正确的,没有碰到不该碰的地方。
- 创建模型models
Django通过自定义python类的形式来定义具体的模型,每个模型代表数据库中的一张表,每个类的实例代表数据表中的一行数据,类中的每个变量代表数据表中的一列字段。Django通过ORM对数据库进行操作,奉行代码优先的理念,将python程序员和数据库管理员进行分工解耦。
在这个项目中,我们需要建立一张表来放下以下参数:
公积金利率、商业贷款利率
其他的参数暂时写入脚本中
apartment/models.py
from django.db import models
class Rate(models.Model):
GJJ = models.FloatField(default=0,max_digits=4,decimal_places=2)
SYDK = models.FloatField(default=0,max_digits=4,decimal_places=2)
下面我们激活这个模型看看:
先保存一个记录
$ python manage.py makemigrations apartment
Migrations for 'apartment':
apartment\migrations\0001_initial.py
- Create model Rate
再激活:
$ python manage.py migrate
#第一次生成了很多………
Operations to perform:
Apply all migrations: admin, apartment, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying apartment.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying sessions.0001_initial... OK
5. 创建管理员功能
首先,通过下面的命令,创建一个可以登录admin站点的用户:
$ python manage.py createsuperuser
输入用户名:
Username: admin
输入邮箱地址:
Email address: [[email protected]](mailto:[email protected])
输入密码:
Password: **********
Password (again): *********
Superuser created successfully.
注意:Django1.10版本后,超级用户的密码强制要求具备一定的复杂性,不能再偷懒了。
- 启动开发服务器
服务器启动后,在浏览器访问http://127.0.0.1:8000/admin/。登陆之后,你就能看到界面了:
现在你还无法看到你的贷款利率参数,必须先在admin中进行注册,告诉admin站点,请将apartment的模型加入站点内,接受站点的管理。
打开apartment/admin.py:
from django.contrib import admin
from .models import Question
class RateAdmin (admin.ModelAdmin):
list_display = ('id','GJJ','SYDK')
admin.site.register(Question)
这下就有了:
Django是一个可以高度定制的优秀框架,其中包括项目名称等其实都是可以修改的,感兴趣的朋友可以自己摸索。
如此一来,整个Django的框架就搭起来了(至少你已经有了一个可以访问的网站首页,还有一个可以访问的管理员页面)。
接下来我们可以在这个基础上,将房贷算法逐步添加到代码中(也许有些甚至可以直接放在前端)。
那我们下一章再见~