社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

Django框架小白学习记录(不断更新)

陈奕湫 • 4 年前 • 408 次点击  
阅读 17

Django框架小白学习记录(不断更新)

Django框架小白学习记录(不断更新)

查看安装的Django版本

py -m django --version
复制代码

若你用 pip 安装 Django,你可以使用 --upgrade-U 标志进行更新

$ pip install -U Django
复制代码

此文章是3.0版本

进入正文


创建项目

打开命令行,cd 到一个你想放置你代码的目录,然后运行以下命令:

django-admin startproject mysite
复制代码

mysite即项目名称

看一下 startproject 创建的内容

mysite/
    manage.py //一个让你用各种方式管理 Django 项目的命令行工具
    mysite/
        __init__.py
        settings.py //Django 项目的配置文件
        urls.py     //Django 项目的 URL 声明
        asgi.py     //作为你的项目的运行在 ASGI 兼容的Web服务器上的入口
        wsgi.py     //作为你的项目的运行在 WSGI 兼容的Web服务器上的入口
复制代码
  • 最外层的 mysite/ 根目录只是你项目的容器, 根目录名称对Django没有影响,你可以将它重命名为任何你喜欢的名称。

运行项目,命令行输入以下命令

py manage.py runserver
复制代码

成功的话,会看到以下输出

Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

四月 01, 2020 - 15:50:53
Django version 3.0, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
复制代码

浏览器访问 https://127.0.0.1:8000/ 你将会看到一个“祝贺”页面,随着一只火箭发射,服务器已经运行了。

你也可以更换端口

py manage.py runserver 8080
复制代码

案例:创建投票应用

项目和应用有什么区别?

应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者小型的投票程序。

项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用

处于 manage.py 所在的目录下,然后运行这行命令来创建一个应用:

py manage.py startapp polls
复制代码

这将会创建一个 polls 目录,它的目录结构大致如下:

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py
复制代码

编写第一个视图

在 polls/urls.py 中,输入如下代码:

polls/urls.py
from django.urls import path

from . import views

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

下一步是要在根 URLconf 文件中指定我们创建的 polls.urls 模块。在 mysite/urls.py 文件的 urlpatterns 列表里插入一个 include(), 如下:

mysite/urls.py
from django.contrib import admin

from django.urls import include, path

urlpatterns = [path('polls/', include('polls.urls')), path('admin/', admin.site.urls), ]

输入命令:

python manage.py runserver
复制代码

用浏览器访问 http://localhost:8000/polls/, 你应该能够看见 "Hello, world. You're at the polls index." ,这是你在 index 视图中定义的。

数据库配置

默认是SQLite

本来想配mysql,待简单学习后再配置

编辑 mysite/settings.py 文件前,先设置 TIME_ZONE 为你自己时区,顺便修改一下语言

Django有自带的默认应用

默认开启的某些应用需要至少一个数据表,所以,在使用他们之前需要在数据库中创建一些表。请执行以下命令:

py manage.py migrate
复制代码

创建模型

比如在这个投票应用中,需要创建两个模型:问题 Question 和选项 Choice。

polls/models.py
from django.db import models

class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published')

class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)

激活模型

首先得把 polls 应用安装到我们的项目里

在配置类 INSTALLED_APPS 中添加设置。因为 PollsConfig 类写在文件 polls/apps.py 中,所以它的点式路径是 'polls.apps.PollsConfig'。在文件 mysite/settings.py 中 INSTALLED_APPS 子项添加点式路径后,它看起来像这样:

mysite/settings.py
INSTALLED_APPS = [ 'polls.apps.PollsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
输入以下命令即完成激活
py manage.py makemigrations polls
py manage.py migrate
复制代码

所以改变模型需要这三步:

  • 编辑 models.py 文件,改变模型。
  • 运行 python manage.py makemigrations 为模型的改变生成迁移文件。
  • 运行 python manage.py migrate 来应用数据库迁移。

尝试API

输入以下命令进入交互python命令行

py manage.py shell
复制代码

你可以输入以下来进行测试database

>>> from polls.models import Choice, Question  # Import the model classes we just wrote.

# No questions are in the system yet.
>>> Question.objects.all()
<QuerySet []>

# Create a new Question.



    
# Support for time zones is enabled in the default settings file, so
# Django expects a datetime with tzinfo for pub_date. Use timezone.now()
# instead of datetime.datetime.now() and it will do the right thing.
>>> from django.utils import timezone
>>> q = Question(question_text="What's new?", pub_date=timezone.now())

# Save the object into the database. You have to call save() explicitly.
>>> q.save()

# Now it has an ID.
>>> q.id
1
复制代码

Django管理页面

创建一个管理员账户:

py manage.py createsuperuser
复制代码

启动:

py manage.py runserver
复制代码

进入 http://127.0.0.1:8000/admin/

你会看到管理员页面

在后台可以进行数据编辑

注意创建的应用要进行接口才能查看

打开 polls/admin.py 文件,把它编辑成下面这样:

polls/admin.py
from django.contrib import admin

from .models import Question

admin.site.register(Question)

再次打开管理页面即可对应用的数据进行编辑

--

--


之后进行render()渲染html文件待更新

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/61761
 
408 次点击