Django框架学习(一)

项目创建步骤

  • $ django-admin startproject mysite 创建一个名为mysite的项目
  • $ python manage.py startapp pollsmanage.py目录下创建polls模块
  • polls模块中添加urls.py,最终在mysite模块中include该模块即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# polls/urls.py
from django.urls import path

from . import views

urlpatterns = [
path('', views.index, name='index'),
]

# mysite/urls.py
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
# 引入polls模块中的url
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from django.db import models

class Question(models.Model):
# question_text字段名称,CharField字符串类型,max_length最大长度
question_text = models.CharField(max_length=200)
# DateTimeField日期类型的字段datetime
pub_date = models.DateTimeField('date published')

class Choice(models.Model):
# 设置外键,对象为Question类
# 这里有个问题 明明设置的删除时方法是CASCADE但实际上数据库查看是RESTRICT,经验证模式并没有生效
# CONSTRAINT `polls_choice_question_id_c5b4b260_fk_polls_question_id` FOREIGN KEY (`question_id`) REFERENCES `polls_question` (`id`) ON DELETE CASCADE (CASCADE时DDL)
# CONSTRAINT `polls_choice_question_id_c5b4b260_fk_polls_question_id` FOREIGN KEY (`question_id`) REFERENCES `polls_question` (`id`) (RESTRICT时DDL)
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
  • 激活模型,自动为这个模型创建数据库schema
    • settings.py配置文件中找到INSTALLED_APPS配置类并添加polls.apps.PollsConfig
    • 执行python manage.py makemigrations pollsDjango 会检测你对模型文件的修改,生成0001_initial.py
    • 执行python manage.py migrate创建数据库表

  1. 查阅官方文档安装python的mysql驱动,官方推荐为mysqlclientpip install mysqlclient报错为OSError: mysql_config not found,查阅github,发现人家已经给了你提示
1
2
3
4
5
6
7
8
9
10
11
12
13
macOS (Homebrew)
Install MySQL and mysqlclient:

# Assume you are activating Python 3 venv
$ brew install mysql
$ pip install mysqlclient
If you don't want to install MySQL server, you can use mysql-client instead:

# Assume you are activating Python 3 venv
$ brew install mysql-client
$ echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.bash_profile
$ export PATH="/usr/local/opt/mysql-client/bin:$PATH"
$ pip install mysqlclient
赏个🍗吧
0%