Django框架MTV模式demo

常用命令

# 1.创建django项目
django-admin startproject project_name 
# 2.创建app,app目录下执行,git。
django-admin.exe startapp appname
django-admin.py startapp appname
python manage.py startapp appname
# 3.为模型的改变生成迁移文件。
python manage.py makemigrations
仅仅对指定app进行作用的话则执行如下命令:
python manage.py makemigrations appname
# 4.执行数据库迁移。
python manage.py migrate
仅仅对指定app进行作用的话则执行如下命令:
python manage.py migrate appname
# 5.创建超级管理员
python manage.py createsuperuser

目录结构

在这里插入图片描述

关系图

图片来源:https://www.cnblogs.com/52forjie/p/7825164.html

数据库的安装与创建

  1. 安装好mysql
  2. 进入Mysql安装目录下.\bin文件夹,net start mysql:启动mysql服务。
  3. mysql -u root -p,输入密码后进入控制台。
  4. create database dbname; 创建数据库。

django配置

settings.py设置

  1. 配置数据库。
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'monitor_demo2',
        'USER':'root',
        'PASSWORD':'******', 
        'HOST':'localhost',
        'PORT':'3306',
    }
}
  1. INSTALLED_APPS中添加新建的app路径:告诉django本项目是由哪些应用程序组成。
  2. TEMPLATES中添加模板绝对路径(需先在project目录下创建模板文件夹templates)。此处为BASE_DIR/templates下。
'DIRS': [os.path.join(BASE_DIR, 'templates')]

4.添加静态文件路径(需先在project目录下创建静态文件夹static)。

STATICFILES_DIRS=(os.path.join(BASE_DIR, "static"),)

模型操作。

相应app下models.py文件中创建数据库表(代码如下),并生成迁移文件,执行数据库迁移。

class model_aprov(models.Model):
	""" 模型审核表 """
	id = models.AutoField(primary_key=True)
	modelname = models.CharField(max_length=20, verbose_name='模型编号')
	apply_dt = models.CharField(max_length=20, verbose_name='申请日期')
	types = models.CharField(max_length=20, verbose_name='类别')
	type_value = models.CharField(max_length=20, verbose_name='类别值')
	loan_nums = models.IntegerField(verbose_name='模型审批量')
	passrate = models.FloatField(verbose_name='模型通过率')
	createDateTime = models.DateTimeField(auto_now_add=True)
	class Meta:
		ordering = ('-createDateTime',)
	def __str__(self):
		return self.modelname #默认使用modelname来显示主题信息

创建管理网站

  1. 创建管理员,设置用户名及密码。
  2. 向管理网站注册模型。app中admin.py添加类似以下代码:
from appName.models import model_aprov
admin.site.register(model_aprov)
  1. 启动项目。localhost:8000/admin/,输入账号和密码进入管理界面。

创建网页

URL的定义
  1. app目录下创建urls.py文件
url匹配模板。来自网页请求。
path('Js_aprov/<str:key>/',views.Aprov_results, name='Js_aprov')

path的三个参数。
第一个是与请求的url相匹配的正则表达式;
第二个是对应的视图函数,请求的url与第一个参数匹配时调用;
第三个参数定义该url模式名称,在代码其他需要用到本链接的地方使用该名称,而不编写url。

url匹配model。来自静态文件(.js)请求
path('v1/api/Aprov_results/', views.AprovResults_api)
均放入放入列表urlpatterns中
  1. 在项目主文件夹urls.py中include相应app的urls。
path('ins/', include('Ins_app1.urls'))```

#### 编写视图
视图函数接受请求的信息,生成网页需要的数据,并发送给浏览器。
##### 匹配模板
请求的url与我们定义的URL模式匹配时,django在view.py中查找Aprov_results()函数,再将请求对象传递给视图函数。  
key为传递给模板的参数。
```python
def Aprov_results(request, key):
    return render(request, 'js/aprov_results.html', {'product':key})
匹配model

该视图函数返回序列化后的model数据给静态文件(.js)。

from app.jsapp.models import model_aprov
from app.jsapp.serializers import ModelaprovSerializer
from rest_framework.decorators import api_view
from rest_framework.response import Response
from django.http import JsonResponse
from rest_framework import status
@api_view(['POST'])
def AprovResults_api(request):
	if request.method == 'POST':
		modelname = request.POST.get('model')
		type_value = request.POST.get('type_value')
		if modelname and type_value:
			data = model_aprov.objects.filter(modelname=modelname,type_value=type_value).order_by('apply_dt')
			if data:
				serializer = ModelaprovSerializer(data, many=True)
				return Response({'code': 0, 'data': serializer.data})
			else:
				return Response({'code': 1, 'data': []})
		else:
			return JsonResponse({'info': 'para is null'}, status=status.HTTP_400_BAD_REQUEST)
	else:
		return JsonResponse({'info': '请求方法错误,使用POST'}, status=status.HTTP_400_BAD_REQUEST)
创建序列化文件

app目录下创建serializers.py文件
序列化model数据

from rest_framework import serializers
from app.jsapp.models import model_aprov
class ModelaprovSerializer(serializers.ModelSerializer):
    class Meta:
        model = model_aprov
        fields = ('apply_dt,'loan_nums','passrate')
完善静态文件static

css,js,fonts

完善模板模板templates

html

父模板

所有页面都包含的部分,如index。

子模板

继承父模板

错误及解决

数据库错误

现象

执行命令python manage.py runserver时报错:
Error loading MySQLdb module.Did you install mysqlclient?

原因

没有找到MySQLdb包,将pymysql当作MySQLdb来使用。

方法

settings.py同目录下的__init__.py中添加以下代码:

import pymysql
pymysql.install_as_MySQLdb()

其他ip访问失败

  • settings.py中设置ALLOWED_HOSTS = ['*']
    ,允许所有局域网ip访问。
  • 仅允许指定ip访问,ALLOWED_HOSTS = ['192.168.1.1','127.0.0.1']
  • 使用python manage.py runserver 0.0.0.0:8000命令启动服务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值