一.路由系统
a. 创建app
- pycharm 创建
- 使用命令行的方式创建时候,
python manage.py startapp app02
上述两种方式的区别:
使用pycharm创建, 会自动帮我们注册app
而使用命令行的方式, 并不会帮我们注册
b. 路由的分组
urls.py:
from django.conf.urls import url, include
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^test/', views.test),
url(r'^classes/', include('classes.urls'))
]
classes:
urls.py:
from django.conf.urls import url
urlpatterns = [
url(r'^get_classes/', views.get_classes),
]
访问 http://127.0.0.1/classes/get_classes/
c. 路由的分发
- 正则表达式
urls.py:
url(r'^test/(\w+)/(\w+)', views.test),
views.py:
def test(request, id, name):
print(id, name)
精准匹配:
urls.py:
url(r'^test/(?P\w+)/(?P\w+)', views.test),
views.py:
def test(request, id, name):
print(id, name)
反向路由解析:
urls.py:
url(r'^login/', views.test, name='m1')
views.py:
def login(request):
return render(request, "login.html")
login.html:
<form action='{% url "m1" %}'>
d. FBV 和 CBV:
FBV: 基于函数实现业务逻辑
CBV: 基于类实现业务逻辑
- 实现方式:
urls.py:
url(r'^users/', views.Users.as_view())
views.py:
from django.views import View
class Users(View):
def dispatch(request):
super()
def get(self, request):
pass
def post(self, request):
pass
写django rest framework (drf)的时候, 更多的会使用CBV的方式
二.orm
a.基本的配置:
- 创建一个数据库
- settings.py文件中配置:
1. 需要在install_app中配置需要连接的app
2. 需要在database中进行配置连接mysql的用户名和密码以及数据库
- 需要在app下面的__init__.py文件中进行配置pymysql
b. models.py 写数据表模型(类):
通过类来生成表 (code first)
# Create your models here.
class UserInfo(models.Model):
### 主键自增id不用写, 默认会加上
name = models.CharField(max_length=32, null=True)
age = models.CharField(max_length=32, null=True)
生成表:
python manage.py makemigrations
python manmge.py migrate