zoukankan      html  css  js  c++  java
  • mycharm环境建立django项目并增删改查

    准备开发环境

    提前准备好python(本机:3.7.4),pip等组件(略)。

    1.下载并安装mycharm

    2.下载并安装django框架,操作步骤为:file-->settings-->project(python interpreter),查看右侧是否有django框架,若没有则新增:

    新增页面:

    完成后即可。项目完整目录如下:

    一:输出普通页面

    在djangoweb项目的views.py页面添加如下代码:

    from django.http import HttpResponse, JsonResponse
    from django.shortcuts import render
    def index(request):
        # return HttpResponse('Hello Django')
        context = {}
        context['hello'] = 'Hello World!'  # 数据绑定
        return render(request, 'hello.html', context)  # 将绑定的数据传入前台

    然后在djangoproject1项目的urls.py页面,添加路由规则:

    from DjangoWeb import views
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('index/', views.index)
    ]

    并在此项目的settings.py页面添加:

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

    在与djangoweb项目平级的路径下建立文件夹:static/css,static/js,并在其中放入静态文件mypage.css及jquery.js,这里只是演示静态文件的存放及获取方法,放其他文件也行。

    然后,在templates目录下建立base.html及hello.html,其代码如下:

    base.html:

    {% load static %}
    {#base.html#}
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>模板测试</title>
        <link rel="stylesheet" href="{% static 'css/mypage.css' %}">
        <script src="{% static 'js/jquery.js' %}"></script>
    </head>
    <body>
        <h1>{{ hello }}</h1>
        <p>Django模板测试</p>
        {% block mainbody %}
           <p>original</p>
        {% endblock %}
    </body>
    </html>

    hello.html:

    {#hello.html#}
    {% extends "base.html" %}
     
    {% block mainbody %}<p class="redColor">继承了 base.html 文件</p>
    {% endblock %}

    建立后,在控制台启动:

    python manage.py runserver

    并在浏览器中访问:http://127.0.0.1:8000/index/页面:

    二.数据增删改查:

    根据数据库实际情况,修改settings.py中的database环节:

    DATABASES = {
        'default': {
            # 'ENGINE': 'django.db.backends.sqlite3',
            # 'NAME': BASE_DIR / 'db.sqlite3',
            'ENGINE': 'django.db.backends.mysql',
            'NAME': '****',
            'USER': '*****',
            'PASSWORD': '*****',
            'HOST': '127.0.0.1',
            'PORT': '3306'
        }
    }

    其中需要安装mysqlclient组件。修改好配置后,在控制台运行以下命令,来根据数据库表生成model:

    python manage.py inspectdb > projectname/models.py
    配置了多个数据库,则还可以配置数据库别名来指定根据哪个库中的表来生成Model
    python manage.py inspectdb --database default >student/models.py  # default是默认的别名

    完成后,在views.py页面编写相关方法,并在urls.py中配置好urlpatterns(参照上面方法,此处略)。

    views.py页面相关代码(重点):

    最简单输出json代码:

    def getjson(self):
        data = {
            'ID': '1',
            'name': '张飞',
            '学历': '本科'
        }
        return HttpResponse(json.dumps(data), content_type="application/json")

    查询数据写法1:

    def select(self):
        a = OcrScreen.objects.get(typeid=1)
        m = {
                 'typeid': a.typeid,
                 'screenname': a.screenname
             }
        return HttpResponse(json.dumps(m), content_type="application/json")

    查询数据写法2:

    def select(self):
        for song in OcrScreen.objects.all():
            m = {
                'typeid': song.typeid,
                'screenname': song.screenname
            }
            z.append(m)
        return HttpResponse(json.dumps(m), content_type="application/json")

    查询数据写法3:

    def select(self):
        a = OcrScreen.objects.get(typeid=1)
        z = serializers.serialize("json", [a])
        return HttpResponse(json.dumps(z), content_type="application/json")

    新增及修改数据代码如下:

    def add(self):
        a = OcrScreen(typeid=1, screenname='222222', machinetypeid=1, status=1, excelpath='\dddd\abc')
        a.save()
        return HttpResponse("OK")

    删除数据代码如下:

    def delete(self):
        a = OcrScreen.objects.get(typeid=1)
        a.delete()
        return HttpResponse("OK")

    restful风格写法:

    def validate_picture(request):
    
        picture_path = request.GET['picture_path']
        if picture_path == '':
            return HttpResponse('缺少参数', content_type="application/json")
    
        _file_exist = os.path.exists(picture_path)
    
        if _file_exist is False:
            a = ResponseObj(result=False, message='文件不存在', created_path='')
            return HttpResponse(a.serialize(), content_type="application/json, charset=utf-8") 
      else:
         return HttpResponse('OK', content_type="application/json")

    ResponseObj.serialize方法如下:

    def serialize(self):
            return json.dumps({'result': self.result, 'message': self.message, 'created_path': self.created_path}, ensure_ascii=False)

    调用方法很简单:http://127.0.0.1:8000/validatePicture?picture_path=23

    返回:

    以上代码均经过验证,其中路由部分解释以后再补上,仅供参考。

    文章出处:www.cnblogs.com/jizhong

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。否则保留追究法律责任的权利。

  • 相关阅读:
    There is an overlap in the region chain修复
    There is an overlap in the region chain
    region xx not deployed on any region server
    python 中的re模块,正则表达式
    TCP粘包问题解析与解决
    yield from
    Git push提交时报错Permission denied(publickey)...Please make sure you have the correct access rights and the repository exists.
    mysql 中Varchar 与char的区别
    Mysql 字符集及排序规则
    请实现一个装饰器,限制该函数被调用的频率,如10秒一次
  • 原文地址:https://www.cnblogs.com/jizhong/p/15070314.html
Copyright © 2011-2022 走看看