{"id":49335,"date":"2023-07-18T13:38:42","date_gmt":"2023-09-14T13:39:01","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/django%e7%9a%84%e7%a7%98%e7%ac%88\/"},"modified":"2024-04-30T14:10:49","modified_gmt":"2024-04-30T06:10:49","slug":"django%e7%9a%84%e7%a7%98%e7%ac%88","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/django%e7%9a%84%e7%a7%98%e7%ac%88\/","title":{"rendered":"Django\u7684\u79d8\u7b08"},"content":{"rendered":"<h1>\u524d\u8a00<\/h1>\n<p>\u5728\u5b66\u4e60Django\u65f6\uff0c\u6709\u4e00\u4e9b\u89c4\u5219\u6027\u7684\u8981\u6c42\uff0c\u4ee5\u53ca\u521d\u5b66\u8005\u7279\u6709\u7684\u53e5\u6cd5\u548c\u5199\u6cd5\uff0c\u8fd9\u4e9b\u53ef\u4ee5\u79f0\u4e4b\u4e3a\u201c\u546a\u6587\u201d\u3002\u4e3a\u4e86\u907f\u514d\u4e0e\u5176\u4ed6\u8bed\u8a00\u7684\u201c\u546a\u6587\u201d\u6df7\u6dc6\u6216\u9519\u8bef\u5730\u4f7f\u7528\u7c7b\u4f3c\u7684\u201c\u546a\u6587\u201d\uff0c\u6211\u4eec\u9700\u8981\u5c06\u8fd9\u4e9b\u201c\u546a\u6587\u201d\u8bb0\u5f55\u5728\u81ea\u5df1\u7684\u6587\u6863\u4e2d\uff0c\u4ee5\u4f9b\u53c2\u8003\u3002<\/p>\n<h2>\u73af\u5883<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">windows11 64bit<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">VScode<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">python v3.9.6 64bit<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">django v4.0.1<\/ul>\n<h2>\u6784\u6210<\/h2>\n<h3>\u9879\u76ee\u521b\u5efa<\/h3>\n<pre class=\"post-pre\"><code>django-admin startproject hogehoge\r\n<\/code><\/pre>\n<h3>\u5e94\u7528\u7a0b\u5e8f\u5f00\u53d1<\/h3>\n<pre class=\"post-pre\"><code>python manage.py startapp hogehoge\r\n<\/code><\/pre>\n<h3>\u521b\u5efa\u6570\u636e\u5e93<\/h3>\n<pre class=\"post-pre\"><code>python manage.py migrate\r\n<\/code><\/pre>\n<h3>\u521b\u5efa\u7528\u6237 (Yu\u00e8 zh\u011b de zu\u00f2<\/h3>\n<pre class=\"post-pre\"><code>python manage.py createsuperuser\r\n<\/code><\/pre>\n<h3>\u670d\u52a1\u5668\u542f\u52a8<\/h3>\n<pre class=\"post-pre\"><code>python manage.py runserver \r\n<\/code><\/pre>\n<h3>\u5176\u4ed6<\/h3>\n<pre class=\"post-pre\"><code>mkdir templates\r\nmkdir static\r\nmkdir media\r\ntouch .\/hogehogeapp\/urls.py\r\ntouch .\/templates\/base.html\r\ntouch .\/templates\/hoge.html\r\ntouch .\/static\/style.css\r\n<\/code><\/pre>\n<h3>\u6784\u6210<\/h3>\n<pre class=\"post-pre\"><code>- hogehogeproject\r\n\u3000- hogehogeproject\r\n\u3000- hogehogeapp\r\n\u3000- templates\r\n\u3000- static\r\n\u3000- media\r\n\u3000- db.sqlite3\r\n\u3000- manage.py\r\n<\/code><\/pre>\n<h2>\u7f16\u7801<\/h2>\n<h3>hogehogeproject\/setting.py\u7684\u8bbe\u5b9a\u6587\u4ef6<\/h3>\n<pre class=\"post-pre\"><code><span class=\"c1\"># \u30d9\u30fc\u30b9\u306e\u30d1\u30b9\u306e\u8ffd\u52a0\r\n<\/span><span class=\"n\">BASE_DIR<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Path<\/span><span class=\"p\">(<\/span><span class=\"n\">__file__<\/span><span class=\"p\">).<\/span><span class=\"nf\">resolve<\/span><span class=\"p\">().<\/span><span class=\"n\">parent<\/span><span class=\"p\">.<\/span><span class=\"n\">parent<\/span>\r\n\r\n<span class=\"c1\"># \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u7d44\u307f\u8fbc\u307f\r\n<\/span><span class=\"n\">INSTALLED_APPS<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"sh\">'<\/span><span class=\"s\">django.contrib.admin<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"sh\">'<\/span><span class=\"s\">django.contrib.auth<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"sh\">'<\/span><span class=\"s\">django.contrib.contenttypes<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"sh\">'<\/span><span class=\"s\">django.contrib.sessions<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"sh\">'<\/span><span class=\"s\">django.contrib.messages<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"sh\">'<\/span><span class=\"s\">django.contrib.staticfiles<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"sh\">'<\/span><span class=\"s\">hogehogeapp<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span>\r\n<span class=\"p\">]<\/span>\r\n\r\n<span class=\"c1\"># \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u6307\u5b9a\r\n<\/span><span class=\"n\">TEMPLATES<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"p\">{<\/span>\r\n        <span class=\"sh\">'<\/span><span class=\"s\">BACKEND<\/span><span class=\"sh\">'<\/span><span class=\"p\">:<\/span> <span class=\"p\">...,<\/span>\r\n        <span class=\"sh\">'<\/span><span class=\"s\">DIRS<\/span><span class=\"sh\">'<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"n\">BASE_DIR<\/span><span class=\"p\">,<\/span> <span class=\"sh\">'<\/span><span class=\"s\">templates<\/span><span class=\"sh\">'<\/span><span class=\"p\">],<\/span>\r\n        <span class=\"sh\">'<\/span><span class=\"s\">APP_DIRS<\/span><span class=\"sh\">'<\/span><span class=\"p\">:<\/span> <span class=\"bp\">True<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"sh\">'<\/span><span class=\"s\">OPTIONS<\/span><span class=\"sh\">'<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n            <span class=\"p\">...,<\/span>\r\n        <span class=\"p\">},<\/span>\r\n    <span class=\"p\">},<\/span>\r\n<span class=\"p\">]<\/span>\r\n\r\n<span class=\"c1\"># css\u306e\u6307\u5b9a\r\n# Static files (CSS, JavaScript, Images)\r\n# https:\/\/docs.djangoproject.com\/en\/4.0\/howto\/static-files\/\r\n<\/span>\r\n<span class=\"n\">STATIC_URL<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">'<\/span><span class=\"s\">static\/<\/span><span class=\"sh\">'<\/span>\r\n\r\n<span class=\"n\">STATICFILES_DIRS<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">path<\/span><span class=\"p\">.<\/span><span class=\"nf\">join<\/span><span class=\"p\">(<\/span><span class=\"n\">BASE_DIR<\/span><span class=\"p\">,<\/span> <span class=\"sh\">'<\/span><span class=\"s\">static<\/span><span class=\"sh\">'<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">]<\/span>\r\n\r\n<span class=\"c1\"># \u753b\u50cf\u306e\u6307\u5b9a\r\n<\/span><span class=\"n\">MEDIA_ROOT<\/span> <span class=\"o\">=<\/span> <span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">path<\/span><span class=\"p\">.<\/span><span class=\"nf\">join<\/span><span class=\"p\">(<\/span><span class=\"n\">BASE_DIR<\/span><span class=\"p\">,<\/span> <span class=\"sh\">'<\/span><span class=\"s\">media<\/span><span class=\"sh\">'<\/span><span class=\"p\">)<\/span> <span class=\"c1\"># \u753b\u50cf\u3092\u4fdd\u5b58\u3059\u308bURL\r\n<\/span>\r\n<span class=\"n\">MEDIA_URL<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">'<\/span><span class=\"s\">\/media\/<\/span><span class=\"sh\">'<\/span> <span class=\"c1\">#\u753b\u50cf\u3092\u8868\u793a\u3059\u308bURL\r\n<\/span>\r\n<\/code><\/pre>\n<h3>\u6a21\u677f\/\u57fa\u672c.html<\/h3>\n<p>\u4ece\u8fd9\u91cc\u590d\u5236\u8d77\u59cb\u6a21\u677f\uff0c\u521b\u5efa\u4e00\u4e2a\u5757\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"cp\">&lt;!doctype html&gt;<\/span>\r\n<span class=\"nt\">&lt;html<\/span> <span class=\"na\">lang=<\/span><span class=\"s\">\"ja\"<\/span><span class=\"nt\">&gt;<\/span>\r\n  <span class=\"nt\">&lt;head&gt;<\/span>\r\n    <span class=\"c\">&lt;!-- Required meta tags --&gt;<\/span>\r\n    <span class=\"nt\">&lt;meta<\/span> <span class=\"na\">charset=<\/span><span class=\"s\">\"utf-8\"<\/span><span class=\"nt\">&gt;<\/span>\r\n    <span class=\"nt\">&lt;meta<\/span> <span class=\"na\">name=<\/span><span class=\"s\">\"viewport\"<\/span> <span class=\"na\">content=<\/span><span class=\"s\">\"width=device-width, initial-scale=1\"<\/span><span class=\"nt\">&gt;<\/span>\r\n\r\n    <span class=\"c\">&lt;!-- Bootstrap CSS --&gt;<\/span>\r\n    <span class=\"nt\">&lt;link<\/span> <span class=\"na\">href=<\/span><span class=\"s\">\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.0.2\/dist\/css\/bootstrap.min.css\"<\/span> <span class=\"na\">rel=<\/span><span class=\"s\">\"stylesheet\"<\/span> <span class=\"na\">integrity=<\/span><span class=\"s\">\"sha384-EVSTQN3\/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC\"<\/span> <span class=\"na\">crossorigin=<\/span><span class=\"s\">\"anonymous\"<\/span><span class=\"nt\">&gt;<\/span>\r\n\r\n    {% block customcss %}\r\n    {% endblock customcss %}\r\n\r\n    <span class=\"nt\">&lt;title&gt;<\/span>Hello, world!<span class=\"nt\">&lt;\/title&gt;<\/span>\r\n  <span class=\"nt\">&lt;\/head&gt;<\/span>\r\n  <span class=\"nt\">&lt;body&gt;<\/span>\r\n    {% block header %}\r\n    {% endblock header %}\r\n\r\n    {% block content %}\r\n    {% endblock content %}\r\n\r\n    <span class=\"c\">&lt;!-- Optional JavaScript; choose one of the two! --&gt;<\/span>\r\n\r\n    <span class=\"c\">&lt;!-- Option 1: Bootstrap Bundle with Popper --&gt;<\/span>\r\n    <span class=\"nt\">&lt;script <\/span><span class=\"na\">src=<\/span><span class=\"s\">\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.0.2\/dist\/js\/bootstrap.bundle.min.js\"<\/span> <span class=\"na\">integrity=<\/span><span class=\"s\">\"sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn\/tWtIaxVXM\"<\/span> <span class=\"na\">crossorigin=<\/span><span class=\"s\">\"anonymous\"<\/span><span class=\"nt\">&gt;&lt;\/script&gt;<\/span>\r\n\r\n    <span class=\"c\">&lt;!-- Option 2: Separate Popper and Bootstrap JS --&gt;<\/span>\r\n    <span class=\"c\">&lt;!--\r\n    &lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@popperjs\/core@2.9.2\/dist\/umd\/popper.min.js\" integrity=\"sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p\" crossorigin=\"anonymous\"&gt;&lt;\/script&gt;\r\n    &lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.0.2\/dist\/js\/bootstrap.min.js\" integrity=\"sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz\/bgldoEyl4H0zUF0QKbrJ0EcQF\" crossorigin=\"anonymous\"&gt;&lt;\/script&gt;\r\n    --&gt;<\/span>\r\n  <span class=\"nt\">&lt;\/body&gt;<\/span>\r\n<span class=\"nt\">&lt;\/html&gt;<\/span>\r\n\r\n\r\n<\/code><\/pre>\n<h3>\u6a21\u677f\/hohe.html<\/h3>\n<pre class=\"post-pre\"><code>{% extends 'base.html' %}\r\n{% load static %}\r\n\r\n{% block customcss %}\r\n<span class=\"nt\">&lt;link<\/span> <span class=\"na\">rel=<\/span><span class=\"s\">'stylesheet'<\/span> <span class=\"na\">type=<\/span><span class=\"s\">'text\/css'<\/span> <span class=\"na\">href=<\/span><span class=\"s\">\"{% static 'style.css' %}\"<\/span><span class=\"nt\">&gt;<\/span>\r\n{% endblock customcss %}\r\n\r\n{% block header %}\r\n{% endblock header %}\r\n\r\n{% block content %}\r\n{% endblock content %}\r\n<\/code><\/pre>\n<h4>\u7ed9\u51fa\u7684\u5efa\u8bae<\/h4>\n<ul class=\"post-ul\">\u30d5\u30a9\u30fc\u30e0\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u30c8\u30fc\u30af\u30f3\u3092\u4ed8\u4e0e\u3059\u308b<\/ul>\n<pre class=\"post-pre\"><code><span class=\"nt\">&lt;form<\/span> <span class=\"na\">method=<\/span><span class=\"s\">\"POST\"<\/span> <span class=\"na\">action=<\/span><span class=\"s\">\"\"<\/span><span class=\"nt\">&gt;<\/span>{% csrf_token %}\r\n<span class=\"nt\">&lt;\/form&gt;<\/span>\r\n<\/code><\/pre>\n<h3>hogehogeproject\/urls.py\u7684\u4e2d\u6587\u91ca\u4e49\u5982\u4e0b\uff1a<\/h3>\n<p>\u8c6a\u683c\u8c6a\u683c\u9879\u76ee\/urls.py<\/p>\n<pre class=\"post-pre\"><code><span class=\"kn\">from<\/span> <span class=\"n\">django.contrib<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">admin<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"n\">django.urls<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">path<\/span><span class=\"p\">,<\/span> <span class=\"n\">include<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"n\">django.conf<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">settings<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"n\">django.conf.urls.static<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">static<\/span>\r\n\r\n<span class=\"n\">urlpatterns<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"nf\">path<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">admin\/<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"n\">admin<\/span><span class=\"p\">.<\/span><span class=\"n\">site<\/span><span class=\"p\">.<\/span><span class=\"n\">urls<\/span><span class=\"p\">),<\/span>\r\n    <span class=\"nf\">path<\/span><span class=\"p\">(<\/span><span class=\"sh\">''<\/span><span class=\"p\">,<\/span> <span class=\"nf\">include<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">hogehogeapp.urls<\/span><span class=\"sh\">'<\/span><span class=\"p\">)),<\/span>\r\n<span class=\"p\">]<\/span><span class=\"o\">+<\/span> <span class=\"nf\">static<\/span><span class=\"p\">(<\/span><span class=\"n\">settings<\/span><span class=\"p\">.<\/span><span class=\"n\">MEDIA_URL<\/span><span class=\"p\">,<\/span> <span class=\"n\">document_root<\/span><span class=\"o\">=<\/span><span class=\"n\">settings<\/span><span class=\"p\">.<\/span><span class=\"n\">MEDIA_ROOT<\/span><span class=\"p\">)<\/span><span class=\"o\">+<\/span> <span class=\"nf\">static<\/span><span class=\"p\">(<\/span><span class=\"n\">settings<\/span><span class=\"p\">.<\/span><span class=\"n\">STATIC_URL<\/span><span class=\"p\">,<\/span> <span class=\"n\">document_root<\/span><span class=\"o\">=<\/span><span class=\"n\">settings<\/span><span class=\"p\">.<\/span><span class=\"n\">STATIC_ROOT<\/span><span class=\"p\">)<\/span>\r\n<\/code><\/pre>\n<h3>\u597d\u597dapp\u7684\u6a21\u578b<\/h3>\n<pre class=\"post-pre\"><code><span class=\"kn\">from<\/span> <span class=\"n\">django.db<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">models<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">HogeModel<\/span><span class=\"p\">:<\/span>\r\n    <span class=\"n\">title<\/span> <span class=\"o\">=<\/span> <span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"nc\">CharField<\/span><span class=\"p\">(<\/span><span class=\"n\">max_length<\/span><span class=\"o\">=<\/span><span class=\"mi\">100<\/span><span class=\"p\">)<\/span>\r\n    <span class=\"n\">txt<\/span> <span class=\"o\">=<\/span> <span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"nc\">TextField<\/span><span class=\"p\">()<\/span>\r\n    <span class=\"n\">no<\/span> <span class=\"o\">=<\/span> <span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"nc\">IntegerField<\/span><span class=\"p\">()<\/span>\r\n    <span class=\"n\">duedate<\/span> <span class=\"o\">=<\/span> <span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"nc\">DateField<\/span><span class=\"p\">()<\/span>\r\n    <span class=\"k\">def<\/span> <span class=\"nf\">__str__<\/span><span class=\"p\">(<\/span><span class=\"n\">self<\/span><span class=\"p\">):<\/span>\r\n        <span class=\"k\">return<\/span> <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">title<\/span>\r\n<\/code><\/pre>\n<h3>\u4f7f\u7528hogehogeapp\/views.py\u6587\u4ef6\u4e2d\u7684\u539f\u59cb\u4ee3\u7801\u8fdb\u884c\u91cd\u65b0\u8868\u8ff0\u7684\u4e2d\u6587\u7248\u672c\u3002<\/h3>\n<pre class=\"post-pre\"><code><span class=\"c1\"># import\r\n<\/span><span class=\"kn\">from<\/span> <span class=\"n\">django.views.generic<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">ListView<\/span><span class=\"p\">,<\/span> <span class=\"n\">DetailView<\/span><span class=\"p\">,<\/span> <span class=\"n\">CreateView<\/span><span class=\"p\">,<\/span> <span class=\"n\">DeleteView<\/span><span class=\"p\">,<\/span> <span class=\"n\">UpdateView<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"n\">django.contrib.auth.models<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">User<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"n\">django.contrib.auth<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">authenticate<\/span><span class=\"p\">,<\/span> <span class=\"n\">login<\/span><span class=\"p\">,<\/span> <span class=\"n\">logout<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"n\">django.contrib.auth.decorators<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">login_required<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"n\">django.shortcuts<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">render<\/span><span class=\"p\">,<\/span> <span class=\"n\">redirect<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"n\">django.http<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">HttpResponse<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"n\">django.urls<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">reverse_lazy<\/span>\r\n\r\n<span class=\"c1\"># \u95a2\u6570\u578b\r\n<\/span><span class=\"k\">def<\/span> <span class=\"nf\">hogefunc<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"k\">return<\/span> <span class=\"nc\">HttpResponse<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Hello, World!<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\r\n\r\n<span class=\"k\">def<\/span> <span class=\"nf\">hoge1func<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"k\">return<\/span> <span class=\"nf\">render<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">,<\/span> <span class=\"sh\">'<\/span><span class=\"s\">hogehoge.html<\/span><span class=\"sh\">'<\/span><span class=\"p\">)<\/span>\r\n\r\n<span class=\"nd\">@login_required<\/span>\r\n<span class=\"k\">def<\/span> <span class=\"nf\">hoge2func<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"k\">return<\/span> <span class=\"nf\">redirect<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">hoge2<\/span><span class=\"sh\">'<\/span><span class=\"p\">)<\/span>\r\n\r\n<span class=\"c1\"># \u30af\u30e9\u30b9\u578b\r\n<\/span><span class=\"k\">class<\/span> <span class=\"nc\">HogeList<\/span><span class=\"p\">(<\/span><span class=\"n\">ListView<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"n\">template_name<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">'<\/span><span class=\"s\">hoge.html<\/span><span class=\"sh\">'<\/span>\r\n    <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">HogeModel<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">HogeDetail<\/span><span class=\"p\">(<\/span><span class=\"n\">DetailView<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"n\">template_name<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">'<\/span><span class=\"s\">hoge.html<\/span><span class=\"sh\">'<\/span>\r\n    <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">HogeModel<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">HogeCreate<\/span><span class=\"p\">(<\/span><span class=\"n\">CreateView<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"n\">template_name<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">'<\/span><span class=\"s\">hoge.html<\/span><span class=\"sh\">'<\/span>\r\n    <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">HogeModel<\/span>\r\n    <span class=\"n\">fields<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">title<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"sh\">'<\/span><span class=\"s\">txt<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"sh\">'<\/span><span class=\"s\">no<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"sh\">'<\/span><span class=\"s\">duedate<\/span><span class=\"sh\">'<\/span><span class=\"p\">)<\/span>\r\n    <span class=\"n\">success_url<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">reverse_lazy<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">hoge<\/span><span class=\"sh\">'<\/span><span class=\"p\">)<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">HogeDelete<\/span><span class=\"p\">(<\/span><span class=\"n\">DeleteView<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"n\">template_name<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">'<\/span><span class=\"s\">hoge.html<\/span><span class=\"sh\">'<\/span>\r\n    <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">HogeModel<\/span>\r\n    <span class=\"n\">success_url<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">reverse_lazy<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">hoge<\/span><span class=\"sh\">'<\/span><span class=\"p\">)<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">HogeUpdate<\/span><span class=\"p\">(<\/span><span class=\"n\">UpdateView<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"n\">template_name<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">'<\/span><span class=\"s\">hoge.html<\/span><span class=\"sh\">'<\/span>\r\n    <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">HogeModel<\/span>\r\n    <span class=\"n\">fields<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">title<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"sh\">'<\/span><span class=\"s\">txt<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"sh\">'<\/span><span class=\"s\">no<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"sh\">'<\/span><span class=\"s\">duedate<\/span><span class=\"sh\">'<\/span><span class=\"p\">)<\/span>\r\n    <span class=\"n\">success_url<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">reverse_lazy<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">hoge<\/span><span class=\"sh\">'<\/span><span class=\"p\">)<\/span>\r\n<\/code><\/pre>\n<h4>\u63d0\u793a<\/h4>\n<p>HttpResponse\/ render \/ redirect\u306e\u9055\u3044<br \/>\n\u3053\u3061\u3089\u306e\u8a18\u4e8b\u304c\u308f\u304b\u308a\u3084\u3059\u304b\u3063\u305f\u3067\u3059\u3002<\/p>\n<p>redirect\u3084reverse_lazy\u3067\u3001hogehogeapp\/urls.py\u3067\u5b9a\u7fa9\u3057\u305fname\u3092\u6307\u5b9a<\/p>\n<h3>hogehogeapp\/urls.py\u7684\u540d\u79f0<\/h3>\n<pre class=\"post-pre\"><code><span class=\"kn\">from<\/span> <span class=\"n\">django.urls<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">path<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"n\">.views<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">hogefunc<\/span><span class=\"p\">,<\/span> <span class=\"n\">hoge1func<\/span><span class=\"p\">,<\/span> <span class=\"n\">hoge2func<\/span><span class=\"p\">,<\/span> <span class=\"n\">HogeList<\/span><span class=\"p\">,<\/span> <span class=\"n\">HogeDetail<\/span><span class=\"p\">,<\/span> <span class=\"n\">HogeCreate<\/span><span class=\"p\">,<\/span> <span class=\"n\">HogeDelete<\/span><span class=\"p\">,<\/span> <span class=\"n\">HogeUpdate<\/span>\r\n\r\n<span class=\"n\">urlpatterns<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"nf\">path<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">hoge\/<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"n\">hogefunc<\/span><span class=\"p\">,<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"sh\">'<\/span><span class=\"s\">hoge<\/span><span class=\"sh\">'<\/span><span class=\"p\">),<\/span>\r\n    <span class=\"nf\">path<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">hoge1\/<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"n\">hoge1func<\/span><span class=\"p\">,<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"sh\">'<\/span><span class=\"s\">hoge1<\/span><span class=\"sh\">'<\/span><span class=\"p\">),<\/span>\r\n    <span class=\"nf\">path<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">hoge2\/<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"n\">hoge2func<\/span><span class=\"p\">,<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"sh\">'<\/span><span class=\"s\">hoge2<\/span><span class=\"sh\">'<\/span><span class=\"p\">),<\/span>\r\n    <span class=\"nf\">path<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">list\/<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"n\">HogeList<\/span><span class=\"p\">.<\/span><span class=\"nf\">as_view<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"sh\">'<\/span><span class=\"s\">list<\/span><span class=\"sh\">'<\/span><span class=\"p\">),<\/span>\r\n    <span class=\"nf\">path<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">detail\/&lt;int:pk&gt;<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"n\">HogeDetail<\/span><span class=\"p\">.<\/span><span class=\"nf\">as_view<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"sh\">'<\/span><span class=\"s\">detail<\/span><span class=\"sh\">'<\/span><span class=\"p\">),<\/span>\r\n    <span class=\"nf\">path<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">create<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"n\">HogeCreate<\/span><span class=\"p\">.<\/span><span class=\"nf\">as_view<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"sh\">'<\/span><span class=\"s\">create<\/span><span class=\"sh\">'<\/span><span class=\"p\">),<\/span>\r\n    <span class=\"nf\">path<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">delete\/&lt;int:pk&gt;<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"n\">HogeDelete<\/span><span class=\"p\">.<\/span><span class=\"nf\">as_view<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"sh\">'<\/span><span class=\"s\">delete<\/span><span class=\"sh\">'<\/span><span class=\"p\">),<\/span>\r\n    <span class=\"nf\">path<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">update\/&lt;int:pk&gt;<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"n\">HogeUpdate<\/span><span class=\"p\">.<\/span><span class=\"nf\">as_view<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"sh\">'<\/span><span class=\"s\">update<\/span><span class=\"sh\">'<\/span><span class=\"p\">),<\/span>\r\n<span class=\"p\">]<\/span>\r\n\r\n<\/code><\/pre>\n<h4>\u63d0\u793a<\/h4>\n<ul class=\"post-ul\">\u30af\u30e9\u30b9\u30d9\u30fc\u30b9\u306e\u5834\u5408\u306f\u3001\u30af\u30e9\u30b9\u540d\uff0b**as_view()**\u3092\u3064\u3051\u308b<\/ul>\n<h1>\u672b\u5c3e\u8bf4\u660e<\/h1>\n<p>\u8003\u8651\u5230\u77e5\u8bc6\u548c\u7406\u89e3\u7684\u4e0d\u8db3\uff0c\u4ee5\u53ca\u89e3\u91ca\u4e0d\u591f\u8be6\u7ec6\u548c\u5e94\u8be5\u66f4\u52a0\u5173\u6ce8\u7684\u4e8b\u9879\uff0c\u6211\u4f1a\u6839\u636e\u5b66\u4e60\u7684\u9700\u8981\u4e0d\u65ad\u66f4\u65b0\u5185\u5bb9\u3002<\/p>\n<h1>\u8bf7\u63d0\u4f9b\u66f4\u591a\u4e0a\u4e0b\u6587\u6216\u8005\u9700\u6c42\u4ee5\u4fbf\u6211\u66f4\u597d\u5730\u56de\u7b54\u60a8\u7684\u95ee\u9898\u3002<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Django \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Bootstrap<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u304f\u307e\u306e\u30d6\u30ed\u30b0 &#8211; \u3010Django\u3011render \/ redirect \/ HttpResponse\u306a\u3069\u306e\u9055\u3044<\/ul>\n<h1>\u6700\u65b0\u7248\u672c\u7684\u8bb0\u5f55<\/h1>\n<ul class=\"post-ul\">2023\/01\/11: \u8a18\u4e8b\u516c\u958b<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u8a00 \u5728\u5b66\u4e60Django\u65f6\uff0c\u6709\u4e00\u4e9b\u89c4\u5219\u6027\u7684\u8981\u6c42\uff0c\u4ee5\u53ca\u521d\u5b66\u8005\u7279\u6709\u7684\u53e5\u6cd5\u548c\u5199\u6cd5\uff0c\u8fd9\u4e9b\u53ef\u4ee5\u79f0\u4e4b\u4e3a\u201c\u546a\u6587\u201d\u3002\u4e3a\u4e86\u907f\u514d\u4e0e [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-49335","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Django\u7684\u79d8\u7b08 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/django\u7684\u79d8\u7b08\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Django\u7684\u79d8\u7b08\" \/>\n<meta property=\"og:description\" content=\"\u524d\u8a00 \u5728\u5b66\u4e60Django\u65f6\uff0c\u6709\u4e00\u4e9b\u89c4\u5219\u6027\u7684\u8981\u6c42\uff0c\u4ee5\u53ca\u521d\u5b66\u8005\u7279\u6709\u7684\u53e5\u6cd5\u548c\u5199\u6cd5\uff0c\u8fd9\u4e9b\u53ef\u4ee5\u79f0\u4e4b\u4e3a\u201c\u546a\u6587\u201d\u3002\u4e3a\u4e86\u907f\u514d\u4e0e [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/django\u7684\u79d8\u7b08\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-14T13:39:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T06:10:49+00:00\" \/>\n<meta name=\"author\" content=\"\u97f5, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u97f5, \u79d1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/django%e7%9a%84%e7%a7%98%e7%ac%88\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/django%e7%9a%84%e7%a7%98%e7%ac%88\/\",\"name\":\"Django\u7684\u79d8\u7b08 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-09-14T13:39:01+00:00\",\"dateModified\":\"2024-04-30T06:10:49+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/django%e7%9a%84%e7%a7%98%e7%ac%88\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/django%e7%9a%84%e7%a7%98%e7%ac%88\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/django%e7%9a%84%e7%a7%98%e7%ac%88\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Django\u7684\u79d8\u7b08\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e\",\"name\":\"\u97f5, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g\",\"caption\":\"\u97f5, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunke\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/django%e7%9a%84%e7%a7%98%e7%ac%88\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Django\u7684\u79d8\u7b08 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/django\u7684\u79d8\u7b08\/","og_locale":"zh_CN","og_type":"article","og_title":"Django\u7684\u79d8\u7b08","og_description":"\u524d\u8a00 \u5728\u5b66\u4e60Django\u65f6\uff0c\u6709\u4e00\u4e9b\u89c4\u5219\u6027\u7684\u8981\u6c42\uff0c\u4ee5\u53ca\u521d\u5b66\u8005\u7279\u6709\u7684\u53e5\u6cd5\u548c\u5199\u6cd5\uff0c\u8fd9\u4e9b\u53ef\u4ee5\u79f0\u4e4b\u4e3a\u201c\u546a\u6587\u201d\u3002\u4e3a\u4e86\u907f\u514d\u4e0e [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/django\u7684\u79d8\u7b08\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-09-14T13:39:01+00:00","article_modified_time":"2024-04-30T06:10:49+00:00","author":"\u97f5, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u97f5, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/django%e7%9a%84%e7%a7%98%e7%ac%88\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/django%e7%9a%84%e7%a7%98%e7%ac%88\/","name":"Django\u7684\u79d8\u7b08 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-09-14T13:39:01+00:00","dateModified":"2024-04-30T06:10:49+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/django%e7%9a%84%e7%a7%98%e7%ac%88\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/django%e7%9a%84%e7%a7%98%e7%ac%88\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/django%e7%9a%84%e7%a7%98%e7%ac%88\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"Django\u7684\u79d8\u7b08"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e","name":"\u97f5, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g","caption":"\u97f5, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunke\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/django%e7%9a%84%e7%a7%98%e7%ac%88\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/49335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=49335"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/49335\/revisions"}],"predecessor-version":[{"id":92378,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/49335\/revisions\/92378"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=49335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=49335"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=49335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}