• 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

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

  • 相关阅读:
    RegExp
    svn操作
    前端跨域请求
    UML
    excel 常用设置
    python中 cmp
    python global nonlocal
    python常见异常提示
    table边框和td的width失效
    display_css
  • 原文地址:https://www.cnblogs.com/jizhong/p/15070314.html
Copyright © 2020-2023  润新知