官網
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
