Django框架快速学习

  1. 创建项目:

    django-admin startproject my-app
    

    目录结构如下:

    .
    ├── HelloWorld 项目目录,包名为HelloWorld
    │   ├── __init__.py 一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包
    │   ├── __pycache__ 临时文件
    │   │   ├── __init__.cpython-38.pyc
    │   │   ├── settings.cpython-38.pyc
    │   │   ├── urls.cpython-38.pyc
    │   │   ├── view.cpython-38.pyc
    │   │   └── wsgi.cpython-38.pyc
    │   ├── asgi.py
    │   ├── settings.py	配置文件
    │   ├── urls.py URL调度器,路由器
    │   ├── view.py
    │   └── wsgi.py
    ├── db.sqlite3 临时文件
    └── manage.py 项目管理工具
    
    
  2. 启动服务

    python manage.py runserver
    
  3. 创建app

    一个projects是多个相关的app的集合,一个app也可以属于多个project。

    python manage.py startapp polls
    

    查看目录结构

    ./polls
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py
    

    消息分发 --- urls.py

    一个app可以看做是一个模块,从顶级的url向下级分发,当包括其它 URL 模式时你应该总是使用 include()admin.site.urls 是唯一例外。

    项目urls.py中的path include app的urls

    # 项目的urls.py
    urlpatterns = [
        path('polls/', include('polls.urls')),
        path('admin/', admin.site.urls),
    ]
    

    app的urls中path绑定到相应的处理函数

    # app的urls.py
    urlpatterns = [
      path('get/', views.get, name='get'),
      path('post/', views.post, name='post'),
    ]
    

    path函数具有四个参数,第一个参数为route会匹配url,当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。kwargs: 任意个关键字参数可以作为一个字典传递给目标视图函数。name: 为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。

    请求处理 --- views.py

    from django.http import HttpResponse
    
    
    # Create your views here.
    def get(request):
      data = request.GET['data']
      print(data)
      return HttpResponse("hello world %s." % data)
    
    def post(request):
      data = request.body
      print(data)
      return HttpResponse(data)
    

     

    类似于Java中的controller,匹配URL,执行对应的逻辑

  4. 配置数据库

    setting.py文件中设置DATABASE属性,默认使用SQLite。

    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)
    

    链接app与project

    INSTALLED_APPS = [
        'polls.apps.PollsConfig',
     		...
    ]
    

    创建models

    python manage.py makemigrations polls
    

    根据models创建相应的表

    python manage.py sqlmigrate polls 0001
    

    Django 为我们创建的各种 API

    Question.objects.all()
    q = Question(question_text="What's new?", pub_date=timezone.now())
    q.save()
    Question.objects.filter(id=1)
    Question.objects.filter(question_text__startswith='What')
    ...
    

    框架自动为我们创建了各种操作数据的api,类似于JPA为我们自动映射的各种方法。

  5. Django管理页面

    创建管理员账号

    python manage.py createsuperuser
    

    根据提示创建admin账号,创建后即可登录。

    Register your models,将表交给admin管理,可以在页面中管理数据。

    from django.contrib import admin
    
    # Register your models here.
    from .models import Question
    
    admin.site.register(Question)
    
  6. templates

    对于前后端分离的项目不需要在Python中实现前端页面,所以templates相关知识跳过。

  7. 自定义后台表单

    Django为我们提供了默认的后台表单样式但是也允许我们自定义后台的样式和结构,不是太重要相关知识跳过。

  8. 打包app

    使用pip工具setuptools,默认已经安装。

    打包需要哪些文件?

    (1)README.rst描述你的包是干什么用的,如何使用

    (2)LICENSE授权许可

    (3)setup.cfg执行打包命令时需要的配置文件,描述包的信息(包名,版本,作者信息)

    (4)setup.py封装打包命令

    打包命令是什么?

    打包到sdist目录中python setup.py sdist

    如何使用自己打包的app?

    安装pip install --user django-polls/dist/django-polls-0.1.tar.gz

    卸载pip uninstall django-polls

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值