django介绍

本文详细介绍Django框架的核心功能,包括ORM对象映射、URL及视图处理、模板系统、表单处理、认证管理、管理员模块及国际化支持等内容。

ORM 对象映射关系

使用model操作数据库。django提供丰富的、优雅的操作数据模型的API,同时你也可以使用原生sql操作数据库。

class Band(models.Model):
    """A model of a rock band."""
    name = models.CharField(max_length=200)
    can_rock = models.BooleanField(default=True)


class Member(models.Model):
    """A model of a rock band member."""
    name = models.CharField("Member's name", max_length=200)
    instrument = models.CharField(choices=(
            ('g', "Guitar"),
            ('b', "Bass"),
            ('d', "Drums"),
        ),
        max_length=1
    )
    band = models.ForeignKey("Band")

URLs and views

一个高质量的网站应该有一个干净整洁的URL体系。django支持完美的URL设计,并且请求url不用像php、asp那样带后缀。为了在应用中使用URLs,你需要创建一个URLconf模块。常规做法是在你的app中,使用map的结构保存url对应跳转的views。

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^bands/$', views.band_listing, name='band-list'),
    url(r'^bands/(\d+)/$', views.band_detail, name='band-detail'),
    url(r'^bands/search/$', views.band_search, name='band-search'),
]
      
from django.shortcuts import render

def band_listing(request):
    """A view of all bands."""
    bands = models.Band.objects.all()
    return render(request, 'bands/band_listing.html', {'bands': bands})

模板

django将template设计的强大而容易。它可以让那些使用HTML、设计师或者前端开发工程师快速的上手。另外,它的扩展性非常强大,允许开发人员根据自己的需要自定义模板。

<html>
  <head>
    <title>Band Listing</title>
  </head>
  <body>
    <h1>All Bands</h1>
    <ul>
    {% for band in bands %}
      <li>
        <h2><a href="{{ band.get_absolute_url }}">{{ band.name }}</a></h2>
        {% if band.can_rock %}<p>This band can rock!</p>{% endif %}
      </li>
    {% endfor %}
    </ul>
  </body>
</html>

表单

django框架中提供强大的表单库。该库可以将表单渲染成html、验证表单提交的数据、将数据转化成python类型。django也提供了根据modle来生成表单的方法,并且同步的创建和更新数据。

from django import forms

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

认证模块

django提供了完整的、安全的认证系统。它管理用户账号、用户组、权限、cookie、session,以便你可以快捷的创建账号和安全的登陆、登出。

from django.contrib.auth.decorators import login_required
from django.shortcuts import render

@login_required
def my_protected_view(request):
    """A view that can only be accessed by logged-in users"""
    return render(request, 'protected.html', {'current_user': request.user})

管理员模块

django提供了自动管理模块,该模块可以方便的操作model。

from django.contrib import admin
from bands.models import Band, Member

class MemberAdmin(admin.ModelAdmin):
    """Customize the look of the auto-generated admin for the Member model"""
    list_display = ('name', 'instrument')
    list_filter = ('band',)

admin.site.register(Band)  # Use the default options
admin.site.register(Member, MemberAdmin)  # Use the customized options

国际化

django支持将文本翻译成不同的语言,包括时间、数字、时间区域。它让开发人员选择哪些文本需要翻译成哪些语言,根据需求来编写应用。

from django.shortcuts import render
from django.utils.translation import ugettext

def homepage(request):
    """
    Shows the homepage with a welcome message that is translated in the
    user's language.
    """
    message = ugettext('Welcome to our site!')
    return render(request, 'homepage.html', {'message': message})
      
{% load i18n %}
<html>
  <head>
    <title>{% trans 'Homepage - Hall of Fame' %}</title>
  </head>
  <body>
    {# Translated in the view: #}
    <h1>{{ message }}</h1>
    <p>
      {% blocktrans count member_count=bands.count %}
      Here is the only band in the hall of fame:
      {% plural %}
      Here are all the {{ member_count }} bands in the hall of fame:
      {% endblocktrans %}
    </p>
    <ul>
    {% for band in bands %}
      <li>
        <h2><a href="{{ band.get_absolute_url }}">{{ band.name }}</a></h2>
        {% if band.can_rock %}<p>{% trans 'This band can rock!' %}</p>{% endif %}
      </li>
    {% endfor %}
    </ul>
  </body>
</html>

安全

django提供多种防护措施。

1、点击劫持;

2、xss攻击;

3、跨域访问;

4、SQL注入;

5、远程代码执行;


### Django框架简介 Django是一个开放源代码的Web应用框架,完全由Python编写而成[^1]。它遵循BSD版权协议,并于2005年7月首次发布,随后在2008年9月推出了首个正式版本1.0[^1]。作为一个重量级的Web开发工具,Django因其全面性和高效性而备受开发者青睐。 --- ### Django的主要优势 #### 1. **快速开发** Django的设计理念之一是“Don't Repeat Yourself (DRY)”原则,这使得开发者可以更专注于业务逻辑而非重复性的基础工作。其内置了许多实用的功能模块,减少了从零构建的时间成本[^1]。 #### 2. **安全性高** 为了保护应用程序免受常见的安全威胁,Django提供了多种内置的安全机制。例如,通过`django.middleware.csrf.CsrfViewMiddleware`中间件来防范跨站请求伪造(CSRF)[^2]。此外,还支持密码哈希存储、点击劫持防护等功能,从而显著提升了应用的安全水平。 #### 3. **可扩展性强** 无论是小型项目还是大型复杂系统,Django都能很好地适应需求变化。它的组件化架构允许开发者轻松添加或移除特定功能,这种灵活性让长期维护变得更加简单方便。 #### 4. **丰富的生态系统** 得益于庞大的社区支持以及持续更新迭代,围绕着Django已经形成了一个极其完善的插件库和技术文档集合。这些资源极大地降低了学习门槛并加速了实际项目的推进速度[^1]。 #### 5. **兼容主流数据库** Django自带了一个强大的ORM(Object Relational Mapping),能够无缝对接MySQL、PostgreSQL等多种关系型数据库管理系统(RDBMS)。这意味着即使是在不同类型的后台数据环境中切换操作也相对简便快捷。 ```python # 示例:定义模型类并与数据库交互 from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=50) def __str__(self): return self.title ``` 以上代码片段展示了如何利用Django ORM创建简单的书籍表结构,体现了该框架简化数据库管理的能力。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值