您的位置:

Django教程:从入门到实战

Django是一个高级的Python Web框架,采用了MTV的设计模式。MTV表示Model-Template-View,是Django框架中的三个核心部分。

一、Django入门

1、安装Django

使用pip安装最新版的Django:

pip install django

2、创建Django项目

使用以下命令创建一个新的Django项目:

django-admin startproject myproject

这将创建一个名为myproject的目录,其中包含Django的常规文件结构。

3、运行Django项目

进入myproject目录,运行以下命令启动服务器:

cd myproject
python manage.py runserver

浏览器访问http://127.0.0.1:8000/即可看到Django的欢迎页面。

二、Django模型

1、定义模型

在Django中定义模型,需要在应用程序的models.py文件中创建一个类,该类继承自django.db.models.Model。

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

2、同步数据库

运行以下命令同步数据库:

python manage.py makemigrations
python manage.py migrate

3、使用模型

可以通过以下方式使用模型:

from myapp.models import Book

book = Book(title='Django入门教程', author='张三', pub_date=datetime.now())
book.save()

三、Django视图

1、定义视图

Django视图是一个Python函数,它负责处理Web请求并返回响应。以下是定义视图的示例:

from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello Django!")

2、配置URL

在Django中,每个URL必须映射到一个视图函数。可以通过创建app的urls.py文件并在主urls.py文件中引入来定义URL。

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^hello/$', views.hello, name='hello'),
]

3、访问视图

在浏览器中访问定义的URL即可调用视图函数并返回响应结果。

四、Django模板

1、创建模板

Django模板通常采用HTML和CSS来创建,可以放在应用的templates目录中。以下是一个简单的HTML模板示例:

<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ title }}</h1>
    <p>{{ content }}</p>
</body>
</html>

2、使用模板

在视图函数中,可以通过以下方式使用模板:

from django.shortcuts import render

def my_view(request):
    context = {'title': '我的视图', 'content': '欢迎来到我的世界!'}
    return render(request, 'my_template.html', context)

3、渲染模板

在模板渲染时,指定上下文。以下是在模板中渲染上下文的示例:

<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ title }}</h1>
    <p>{{ content }}</p>
    <p>{{ some_variable }}</p>
</body>
</html>

在视图函数中,传递上下文:

from django.shortcuts import render

def my_view(request):
    context = {'title': '我的视图', 'content': '欢迎来到我的世界!', 'some_variable':1+2}
    return render(request, 'my_template.html', context)

五、Django表单

1、创建表单模型

在forms.py文件中,创建一个表单模型并继承自django.forms.Form。以下是创建表单模型的示例:

from django import forms

class ContactForm(forms.Form):
    subject = forms.CharField(max_length=100)
    message = forms.CharField(widget=forms.Textarea)
    sender = forms.EmailField()
    cc_myself = forms.BooleanField(required=False)

2、表单视图

在views.py文件中,创建一个表单视图,并加载对应的表单模板。以下是创建表单视图的示例:

from django.shortcuts import render
from myapp.forms import ContactForm

def contact(request):
    form = ContactForm()
    return render(request, 'contact.html', {'form': form})

3、表单模板

在表单模板中,使用Django模板标签和变量来渲染表单。以下是表单模板的示例:

<form action="" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Submit" />
</form>

4、处理表单数据

在表单视图中,处理提交的表单数据。以下是处理表单数据的示例:

from django.core.mail import send_mail

def contact(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            send_mail(
                cd['subject'],
                cd['message'],
                cd.get('sender', 'noreply@example.com'),
                ['noreply@example.com'],
                reply_to=[cd.get('sender', 'noreply@example.com')],
            )
            return HttpResponseRedirect('/thanks/')
    else:
        form = ContactForm()

    return render(request, 'contact.html', {'form': form})

六、Django认证系统

1、用户注册

在Django中,用户注册可以通过使用内置的User模型和自定义的表单实现。以下是用户注册的示例:

from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import render, redirect

def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('login')
    else:
        form = UserCreationForm()

    return render(request, 'register.html', {'form': form})

2、用户登录

使用Django内置的LoginView类来处理用户登录。以下是处理用户登录的示例:

from django.contrib.auth.views import LoginView

class MyLoginView(LoginView):
    template_name = 'login.html'

    def form_valid(self, form):
        remember_me = form.cleaned_data.get('remember_me', False)
        if not remember_me:
            self.request.session.set_expiry(0)
        return super().form_valid(form)

3、用户授权

在Django中,用户授权可以使用装饰器实现。以下是用户授权的示例:

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    # 用户已授权,执行处理

七、Django分页

1、创建查询集

在视图函数中,多个对象可组合成查询集。以下是创建查询集的示例:

from myapp.models import Book

def book_list(request):
    book_list = Book.objects.all()
    paginator = Paginator(book_list, 10) # 每页显示10条数据
    page = request.GET.get('page')
    books = paginator.get_page(page)
    return render(request, 'book_list.html', {'books': books})

2、分页模板

在分页模板中,使用Django模板标签和变量来渲染分页内容。以下是分页模板的示例:

<div class="pagination">
    
        {% if page.has_previous %}
            <a href="?page=1"><< first</a>
            <a href="?page={{ page.previous_page_number }}">< previous</a>
        {% endif %}

        <span class="current-page">
            Page {{ page.number }} of {{ page.paginator.num_pages }}.
        </span>

        {% if page.has_next %}
            <a href="?page={{ page.next_page_number }}">> next</a>
            <a href="?page={{ page.paginator.num_pages }}">>> last</a>
        {% endif %}
    
</div>

八、Django缓存

1、缓存页面

在视图函数中,使用cache_page进行缓存页面。以下是缓存页面的示例:

from django.views.decorators.cache import cache_page

@cache_page(60 * 15)
def my_view(request):
    return HttpResponse("Hello, Django!")

2、缓存数据

在视图函数中,使用cache.set和cache.get函数进行缓存数据。以下是缓存数据的示例:

from django.core.cache import cache

def my_view(request):
    data = cache.get('my_data')
    if not data:
        data = expensive_calculation()
        cache.set('my_data', data, 60 * 15) # 缓存15分钟
    return HttpResponse(data)

九、Django测试

1、创建测试用例

在Django中,测试用例通常位于应用程序的tests.py文件中。以下是创建测试用例的示例:

from django.test import TestCase
from django.urls import reverse

class MyTests(TestCase):
    def test_home_page(self):
        response = self.client.get(reverse('home'))
        self.assertEqual(response.status_code, 200)

2、运行测试用例

在命令行中,使用以下命令运行测试用例:

python manage.py test

测试结果将会显示在控制台中。

Django教程:从入门到实战

2023-05-22
python课堂整理32(python笔记全)

2022-11-12
java学习笔记(java初学笔记)

2022-11-14
java入门到实战全套教程下载,Java从入门到实战

2022-11-23
从入门到精通:Django教程

2023-05-20
php学习入门笔记,php 入门

2023-01-07
python教程自强学堂,python教程自学全套

2022-11-20
python基础入门教程06(python 入门教程)

2022-11-10
golang入门视频课程,golang入门教程

本文目录一览: 1、Golang入门到项目实战 | golang简介及安装 2、Docker 占用资源膨胀那么快,你知道怎么清理? 3、Golang入门到项目实战 | golang接口和类型的关系 4

2023-12-08
关于已前的学习笔记java的信息

2022-11-18
python入门零基础教学全集,python入门教程完整版

2022-11-22
关于python开发入门与实战20的信息

2022-11-10
python学习日记day4(大学python笔记整理)

2022-11-13
java笔记,尚硅谷java笔记

2022-12-01
python自动化运维快速入门,Python自动化运维快速入

2022-11-26
java基础知识学习笔记一,Java基础笔记

2022-11-21
webvuejs教程,vuejs从入门到项目实战pdf

本文目录一览: 1、Vue.js入门教程(三)双向绑定和数据渲染 2、前端Vue.js框架是什么? 3、Web 前端怎样入门 4、如何学习vuejs Vue.js入门教程(三)双向绑定和数据渲染 既然

2023-12-08
关于java学习笔记良葛格的信息

2022-11-11
深入理解 Django 企业开发实战

2023-05-20
Python编程:从入门到实践第二版

2023-05-20