官网
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中定义的函数 ]
动态路由:
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 !
命名参数:
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)
额外参数:
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))
二级路由:
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文件 ]
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()
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()
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的名称 ]
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)
启动服务
python manage.py runserver localhost:8888