zoukankan      html  css  js  c++  java
  • Python3-Django-1.开发环境搭建

    官网

      https://www.djangoproject.com/

    安装

      http://www.runoob.com/django/django-install.html

    创建项目

      方式一(命令行): django-admin statrproject ProjectName

      方式二(PyCharm): File -> New Project -> Django -> 选择项目路径 -> Create

    创建APP

      python manage.py startapp app01

    Django URL

      静态路由:

    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views      # 1.导入views模块
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^hello-world/$', views.hello_world),   # 2.配置静态路由,指向views中定义的函数
    ]
    View Code

      动态路由:

    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views      # 1.导入views模块
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^hello-to/(w+)$', views.hello_to),    # 2.配置动态路由,指向views中的函数
    ]
    
    # 页面访问: http://localhost:8888/hello-to/jack
    # 页面响应: Hello,jack !
    # 页面访问: http://localhost:8888/hello-to/jet
    # 页面响应: Hello,jet !
    View Code

         命名参数:

    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views      # 1.导入views模块
    
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^hello-girl/(?P<girl_name>w+)$', views.hello_girl),    # 2.hello_girl函数的参数名字,必须是自定义的girl_name
    ]
    
    # views.py 中的函数
    def hello_girl(request, girl_name):
        """
        第一个参数必须是request
        第二个参数是传递的girl_name
        :param request:
        :param girl_name:
        :return:
        """
        return HttpResponse("Hey,Hey,Hey,%s !" % girl_name)
    View Code

         额外参数:

    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views      # 1.导入views模块
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^hello-extra/(w+)$', views.hello_extra, {"extra_arg1": "bra1", "extra_arg2": "bra2"}),    # 2.
    ]
    ----------------------------------------------------------------------------
    # views.py中的函数,额外的参数名称必须保持一致,且要放在最后
    def hello_extra(request, arg, extra_arg1, extra_arg2):
        return HttpResponse("Wow,%s %s %s!" % (arg, extra_arg1, extra_arg2))
    View Code  

      二级路由:

    from django.conf.urls import url, include    # 1.导入include
    from django.contrib import admin
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^app01/', include("app01.urls")),    # 2.指向其他的urls文件
    ]
    View Code

    Django Views

      1.返回一个字符串

    from django.shortcuts import render, HttpResponse
    
    def return_str(request):
        return HttpResponse("Hello!")

      2.返回一个html文档

    from django.shortcuts import render, HttpResponse
    
    def return_html(request):
        return render(request, "index.html")

    Django Models

      1.配置数据库 settings.py

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'muscle',
            'HOST': '172.16.110.211',
            'PORT': '3306',
            'USER': 'root',
            'PASSWORD': '******',
        }
    }
    
    
    # ------------------------------------------------------------------------#
    # 注意,Python3 django使用pymysql连接需要在__init__.py中添加:
    
    import pymysql
    
    pymysql.install_as_MySQLdb()
    MySQL

      2.编写ORM实体类 models.py

    from django.db import models
     
    class Publisher(models.Model):
        name = models.CharField(max_length=30)
        address = models.CharField(max_length=50)
        city = models.CharField(max_length=60)
        state_province = models.CharField(max_length=30)
        country = models.CharField(max_length=50)
        website = models.URLField()
     
    class Author(models.Model):
        first_name = models.CharField(max_length=30)
        last_name = models.CharField(max_length=40)
        email = models.EmailField()
     
    class Book(models.Model):
        title = models.CharField(max_length=100)
        authors = models.ManyToManyField(Author)
        publisher = models.ForeignKey(Publisher)
        publication_date = models.DateField()
    View Code

      3.安装模型 settings.py

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01',                # 加入app的名称
    ]
    View Code

      4.按照模型配置,生成表结构

        python manage.py makemigrations  # 生成模型的配置文件

        python manage.py migrate      # 根据配置文件创建表结构

    基本的增删改查

    from django.shortcuts import render, HttpResponse
    from app01 import models
    
    
    def insert_data(request):
        pub = models.Publisher.objects.create(name="北大出版社", address="北京市海淀区", city="海淀区", state_province="北京", country="中国", website="www.peking.com")
        return HttpResponse("添加成功")
    
    
    def delete_data(request, pub_id):
        models.Publisher.objects.filter(id=pub_id).delete()
        return HttpResponse("删除成功")
    
    
    def update_data(request):
        models.Publisher.objects.filter(name='北大出版社').update(name="北京大学出版社")
        return HttpResponse("修改成功")
    
    
    def select_data(request):
        query_set = models.Publisher.objects.all()
        # models.Publisher.objects.filter(name="北大出版社")
        # models.Publisher.objects.filter(name="北大出版社").first()
        # models.Publisher.objects.filter(name__contains="出")
        # models.Publisher.objects.filter(id__range=[1, 100])
        result_str = ""
        for line in query_set:
            result_str += line.name
            result_str += "<br/>"
        return HttpResponse(result_str)
    View Code

    启动服务

      python manage.py runserver localhost:8888

        

  • 相关阅读:
    单表查询
    解读python中SocketServer源码
    C++实训(2.3)
    C++实训(2.2)
    C++实训(2.1)
    C++实训(1.3)
    C++实训(1.1)
    顺序表的实现,在vs2019上运行成功
    p243_5(3)
    自考新教材-p176_5(2)
  • 原文地址:https://www.cnblogs.com/qq1207501666/p/6853181.html
Copyright © 2011-2022 走看看