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

    

原文地址:https://www.cnblogs.com/qq1207501666/p/6853181.html