Django实践(四)房贷计算器

在上一章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,不同版本的命令差别应当不大)

Django实践(四)房贷计算器_第1张图片
Django项目测试

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/。登陆之后,你就能看到界面了:

Django实践(四)房贷计算器_第2张图片
管理页面

现在你还无法看到你的贷款利率参数,必须先在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实践(四)房贷计算器_第3张图片
利率项目

Django是一个可以高度定制的优秀框架,其中包括项目名称等其实都是可以修改的,感兴趣的朋友可以自己摸索。


如此一来,整个Django的框架就搭起来了(至少你已经有了一个可以访问的网站首页,还有一个可以访问的管理员页面)。
接下来我们可以在这个基础上,将房贷算法逐步添加到代码中(也许有些甚至可以直接放在前端)。
那我们下一章再见~

你可能感兴趣的:(Django实践(四)房贷计算器)