{"id":1475,"date":"2017-09-16T17:31:16","date_gmt":"2017-09-16T09:31:16","guid":{"rendered":"http:\/\/www.yueguangzu.net\/?p=1475"},"modified":"2017-09-16T17:31:37","modified_gmt":"2017-09-16T09:31:37","slug":"django%e7%b3%bb%e5%88%9714-django%e7%9a%84auth%e8%ae%a4%e8%af%81%e7%b3%bb%e7%bb%9f","status":"publish","type":"post","link":"http:\/\/www.yueguangzu.net\/?p=1475","title":{"rendered":"[Django\u7cfb\u5217]14.Django\u7684auth\u8ba4\u8bc1\u7cfb\u7edf"},"content":{"rendered":"<h4 class=\"md-end-block md-heading md-focus\"><span class=\"md-expand\">1.user\u7528\u6237<\/span><\/h4>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">Django\u63d0\u4f9b\u7684\u8ba4\u8bc1\u7cfb\u7edf\u662f\u4e00\u4e2a\u5e94\u7528,\u4f4d\u4e8esettings.py\u7684\u5df2\u5b89\u88c5\u5e94\u7528<span spellcheck=\"false\"><code>django.contrib.auth<\/code><\/span>,auth\u63d0\u4f9b\u4e86\u540e\u53f0\u7ba1\u7406\u673a\u5236,\u5f00\u53d1\u4e2d\u5e38\u7528,\u5185\u90e8\u673a\u5236\u590d\u6742,\u4f46\u662f\u4f7f\u7528\u7b80\u5355,\u800c\u4e14\u6bd4\u8f83\u91cd\u8981.\u8ba4\u8bc1\u6784\u5efa\u4e86\u4e00\u4e2a\u6a21\u578b,\u5206\u4e09\u79cd,\u5206\u522b\u662f:<\/h5>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\"><span class=\"\">user(\u5b58\u50a8\u7528\u6237\u57fa\u672c\u4fe1\u606f\u548c\u72b6\u6001)<\/span><\/h5>\n<\/li>\n<li>\n<h5 class=\"md-end-block md-heading\">permission(\u6743\u9650\u7ba1\u7406)<\/h5>\n<\/li>\n<li>\n<h5 class=\"md-end-block md-heading\">group(\u7ec4\u7b56\u7565\u7ba1\u7406)<\/h5>\n<\/li>\n<\/ul>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-variable\">INSTALLED_APPS<\/span> = [\r\n \u00a0  <span class=\"cm-string\">'django.contrib.auth'<\/span>, <span class=\"cm-comment\"># \u7528\u6237\u6388\u6743\u7684\u4e00\u4e2aapp,admin\u4f9d\u8d56\u8fd9\u4e2aapp,\u53ea\u8981\u5b89\u88c5auth,\u4f1a\u81ea\u52a8\u589e\u52a0user\u5c5e\u6027<\/span>\r\n]<\/pre>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-comment\">#article\/views.py<\/span>\r\n<span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">index<\/span>(<span class=\"cm-variable\">request<\/span>):\r\n    <span class=\"cm-keyword\">if<\/span> <span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">user<\/span>:\r\n<span class=\"cm-comment\">#       AnnomouseUser(\u533f\u540d\u7528\u6237)<\/span>\r\n        <span class=\"cm-keyword\">print<\/span> <span class=\"cm-string\">\"\u5f53\u524d\u767b\u9646\u7684\u7528\u6237\u662f:\"<\/span>,<span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">user<\/span>\r\n    <span class=\"cm-keyword\">else<\/span>:\r\n        <span class=\"cm-keyword\">print<\/span> <span class=\"cm-string\">'+++++'<\/span>\r\n    <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">HttpResponse<\/span>(<span class=\"cm-string\">'test'<\/span>)<\/pre>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u8fd9\u4e2a\u4f8b\u5b50\u4e2d,\u5bf9request.user\u8fdb\u884c\u6253\u5370\u8f93\u51fa,\u53ea\u8981INSTALLED_APPS\u5b89\u88c5auth,\u4f1a\u81ea\u52a8\u589e\u52a0user\u5c5e\u6027,\u88abrequest\u5bf9\u8c61\u76f4\u63a5\u4f7f\u7528.\u82e5\u662f\u672a\u767b\u5f55\u7684\u8bbf\u95ee,\u4f1a\u4ee5AnnomouseUser\u533f\u540d\u7528\u6237\u8bb0\u5f55.<\/h5>\n<\/blockquote>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea1.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea1.png\" \/><\/span><\/span><\/p>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u5982\u679c\u662f\u5df2\u7ecf\u767b\u9646\u7684\u7528\u6237,\u5219\u4f1a\u6253\u5370\u7528\u6237\u540d<\/h5>\n<\/blockquote>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea2.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea2.png\" \/><\/span><\/span><\/p>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u4ee5\u4e0b\u662f\u7528\u6237\u767b\u9646\u7684\u903b\u8f91<\/h5>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li>\n<h5 class=\"md-end-block md-heading\">\u5fc5\u987b\u5bfc\u5165\u6a21\u5757<span spellcheck=\"false\"><code>from django.contrib.auth.models import User,Permission,Group<\/code><\/span><\/h5>\n<\/li>\n<li>\n<h5 class=\"md-end-block md-heading\">\u8981\u4f7f\u7528\u8ba4\u8bc1\u767b\u9646\u7684\u8bdd,\u9700\u8981\u5bfc\u5165<span spellcheck=\"false\"><code>from django.contrib.auth import authenticate,login,logout<\/code><\/span><\/h5>\n<\/li>\n<li>\n<h5 class=\"md-end-block md-heading\">\u767b\u9646login\u9700\u8981\u4f20\u5165\u53c2\u6570user,\u767b\u51fa\u65f6\u5019\u4e0d\u9700\u8981,\u56e0\u4e3arequest.session\u5c31\u5305\u542b\u4e86sessionid\u548cuser\u7684\u5173\u7cfb<\/h5>\n<\/li>\n<\/ul>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-comment\">#coding: utf8<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">contrib<\/span>.<span class=\"cm-property\">auth<\/span>.<span class=\"cm-property\">models<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">User<\/span>,<span class=\"cm-variable\">Permission<\/span>,<span class=\"cm-variable\">Group<\/span> <span class=\"cm-comment\">#\u9700\u8981\u4f7f\u7528\u4e09\u5927\u6a21\u578b\u5fc5\u987b\u7528auth.models\u5bfc<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">contrib<\/span>.<span class=\"cm-property\">auth<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">authenticate<\/span>,<span class=\"cm-variable\">login<\/span>,<span class=\"cm-variable\">logout<\/span> <span class=\"cm-comment\">#\u5bfc\u5165auth\u7684authenticate\u8ba4\u8bc1\u51fd\u6570<\/span>\r\n<span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">cms_login<\/span>(<span class=\"cm-variable\">request<\/span>):\r\n    <span class=\"cm-keyword\">if<\/span> <span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">method<\/span> == <span class=\"cm-string\">'GET'<\/span>: <span class=\"cm-comment\">#\u8fdb\u6765\u8bf7\u6c42\u5982\u679c\u662fget,\u90a3\u4e48\u8fd4\u56de\u767b\u9646\u754c\u9762<\/span>\r\n        <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">render<\/span>(<span class=\"cm-variable\">request<\/span>,<span class=\"cm-string\">'cms_login.html'<\/span>)\r\n    <span class=\"cm-keyword\">else<\/span>:\r\n        <span class=\"cm-variable\">form<\/span> = <span class=\"cm-variable\">LoginForm<\/span>(<span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">POST<\/span>) <span class=\"cm-comment\">#\u5982\u679c\u662fpost\u8bf7\u6c42,\u901a\u8fc7\u8868\u5355LoginForm\u63a5\u53d7\u4f20\u5165\u7684request.POST\u5b57\u5178\u5bf9\u8c61<\/span>\r\n        <span class=\"cm-keyword\">if<\/span> <span class=\"cm-variable\">form<\/span>.<span class=\"cm-property\">is_valid<\/span>(): <span class=\"cm-comment\">#\u5982\u679c\u8868\u5355\u7684\u8f93\u5165\u662f\u6709\u6548\u7684(\u5bc6\u7801\u89c4\u8303,\u7528\u6237\u540d\u957f\u5ea6\u7b49\u7b49)<\/span>\r\n            <span class=\"cm-variable\">username<\/span> = <span class=\"cm-variable\">form<\/span>.<span class=\"cm-property\">cleaned_data<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-string\">'username'<\/span>,<span class=\"cm-builtin\">None<\/span>) <span class=\"cm-comment\">#\u4ece\u8868\u5355\u6e05\u6d17\u6570\u636e\u5e76\u83b7\u53d6\u83b7\u53d6username,password<\/span>\r\n            <span class=\"cm-variable\">password<\/span> = <span class=\"cm-variable\">form<\/span>.<span class=\"cm-property\">cleaned_data<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-string\">'password'<\/span>,<span class=\"cm-builtin\">None<\/span>)\r\n            <span class=\"cm-variable\">user<\/span> = <span class=\"cm-variable\">authenticate<\/span>(<span class=\"cm-variable\">username<\/span>=<span class=\"cm-variable\">username<\/span>,<span class=\"cm-variable\">password<\/span>=<span class=\"cm-variable\">password<\/span>) <span class=\"cm-comment\">#\u8fd9\u91cc\u4f7f\u7528authenticate\u5e2e\u6211\u4eec\u5b8c\u6210\u6570\u636e\u5e93\u6bd4\u5bf9\u6821\u9a8c\u8d4b\u5bf9\u8c61user<\/span>\r\n            <span class=\"cm-keyword\">if<\/span> <span class=\"cm-variable\">user<\/span> <span class=\"cm-keyword\">and<\/span> <span class=\"cm-variable\">user<\/span>.<span class=\"cm-property\">is_active<\/span>: <span class=\"cm-comment\">#\u5982\u679c\u5bf9\u8c61\u5b58\u5728,\u8bf7\u7528\u6237\u662f\u53ef\u7528\u72b6\u6001<\/span>\r\n                <span class=\"cm-variable\">login<\/span>(<span class=\"cm-variable\">request<\/span>,<span class=\"cm-variable\">user<\/span>)     <span class=\"cm-comment\">#\u89e6\u53d1user\u5bf9\u8c61\u767b\u9646,\u505asessionid\u548cuser\u7684\u5173\u8054<\/span>\r\n                <span class=\"cm-variable\">nexturl<\/span> = <span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">GET<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-string\">'next'<\/span>) <span class=\"cm-comment\">#\u5982\u679c\u6709\u4e0b\u4e00\u6b65\u64cd\u4f5c,\u8bb0\u5f55\u8fd9\u4e2a\u64cd\u4f5c,\u5e76\u5728\u767b\u9646\u540e\u8df3\u8f6c\u56de\u539f\u6765\u7684\u64cd\u4f5c\u754c\u9762<\/span>\r\n                <span class=\"cm-keyword\">if<\/span> <span class=\"cm-variable\">nexturl<\/span>: \r\n                    <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">redirect<\/span>(<span class=\"cm-variable\">nexturl<\/span>)\r\n                <span class=\"cm-keyword\">else<\/span>:\r\n                    <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">redirect<\/span>(<span class=\"cm-variable\">reverse<\/span>(<span class=\"cm-string\">'cms_index'<\/span>)) <span class=\"cm-comment\">#\u6ca1\u6709\u4e0b\u4e00\u6b65\u7684\u64cd\u4f5c,\u5c31\u8fd4\u56de\u4e3b\u9875,\u901a\u8fc7reverse\u67e5\u627e\u522b\u540d\u7684url\u8def\u7531<\/span>\r\n            <span class=\"cm-keyword\">else<\/span>:\r\n                <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">render<\/span>(<span class=\"cm-variable\">request<\/span>,<span class=\"cm-string\">'cms_login.html'<\/span>,{<span class=\"cm-string\">'errors'<\/span>:<span class=\"cm-string\">u'\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef'<\/span>}) <span class=\"cm-comment\">#\u5982user\u5bf9\u8c61\u4e0d\u5b58\u5728,\u6216\u8005\u72b6\u6001\u4e0d\u53ef\u7528,\u62a5\u9519<\/span>\r\n        <span class=\"cm-keyword\">else<\/span>:\r\n            <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">render<\/span>(<span class=\"cm-variable\">request<\/span>,<span class=\"cm-string\">'cms_login.html'<\/span>,{<span class=\"cm-string\">'errors'<\/span>:<span class=\"cm-variable\">form<\/span>.<span class=\"cm-property\">errors<\/span>}) <span class=\"cm-comment\">#\u5982\u679c\u4f20\u5165\u7684form\u8868\u5355\u683c\u5f0f\u6709\u95ee\u9898,\u4e5f\u62a5\u9519.<\/span><\/pre>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea3.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea3.png\" \/><\/span><\/span><\/p>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea4.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea4.png\" \/><\/span><\/span><\/p>\n<h5 class=\"md-end-block md-heading\">1.1\u4f7f\u7528user\u521b\u5efa\u7528\u6237<\/h5>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u9996\u5148\u9700\u8981\u5bfc\u5165\u6a21\u5757<\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">contrib<\/span>.<span class=\"cm-property\">auth<\/span>.<span class=\"cm-property\">models<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">User<\/span><\/pre>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u4f46\u662f\u5728python\u63a7\u5236\u53f0,\u5bfc\u5165\u6a21\u5757\u62a5\u9519\u4e86<\/h5>\n<\/blockquote>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea5.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea5.png\" \/><\/span><\/span><\/p>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u8fd9\u662f\u56e0\u4e3aIde\u7684\u914d\u7f6e\u73af\u5883\u4e0d\u662f\u5728\u7eaf\u7cb9\u7684shell\u73af\u5883\u4e0b,\u800c\u662f\u4e00\u4e2a\u52a0\u4e86\u58f3\u7684shell\u73af\u5883.\u89e3\u51b3\u529e\u6cd5\u662f\u91cd\u65b0\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf.<\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">os<\/span>,<span class=\"cm-variable\">django<\/span>\r\n<span class=\"cm-variable\">os<\/span>.<span class=\"cm-property\">environ<\/span>.<span class=\"cm-property\">setdefault<\/span>(<span class=\"cm-string\">\"DJANGO_SETTINGS_MODULE\"<\/span>, <span class=\"cm-string\">\"project_name.settings\"<\/span>)<span class=\"cm-comment\"># project_name \u9879\u76ee\u540d\u79f0<\/span>\r\n<span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">setup<\/span>()<\/pre>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u5982\u679c\u4e0a\u8ff0\u6b65\u9aa4\u6700\u540e\u4e00\u6b65\u62a5\u9519,\u6309\u5982\u4e0b\u64cd\u4f5c\u5373\u53ef<\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">sys<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">sys<\/span>.<span class=\"cm-property\">path<\/span>.<span class=\"cm-property\">append<\/span>(<span class=\"cm-string\">'F:\\\\Project\\\\git\\\\web\\\\xtadmin'<\/span>) <span class=\"cm-comment\">#F:\\\\Project\\\\git\\\\web\\\\xtadmin\u662f\u9879\u76ee\u76ee\u5f55<\/span><\/pre>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u914d\u7f6e\u73af\u5883\u53d8\u91cf\u540e,\u5373\u53ef\u6b63\u786e\u5bfc<\/h5>\n<\/blockquote>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea8.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea8.png\" \/><\/span><\/span><\/p>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u914d\u7f6e\u73af\u5883\u53d8\u91cf\u540e,\u5373\u53ef\u6b63\u786e\u5bfc\u5165<\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">contrib<\/span>.<span class=\"cm-property\">auth<\/span>.<span class=\"cm-property\">models<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">User<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">u<\/span>=<span class=\"cm-variable\">User<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">create<\/span>(<span class=\"cm-variable\">username<\/span>=<span class=\"cm-string\">'yangfan'<\/span>,<span class=\"cm-variable\">password<\/span>=<span class=\"cm-string\">'123'<\/span>)\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">u<\/span>.<span class=\"cm-property\">save<\/span>()<\/pre>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u914d\u7f6e\u6210\u529f\u540e,\u5373\u53ef\u4f7f\u7528yangfan\u8fd9\u4e2a\u8d26\u53f7\u767b\u9646.<\/h5>\n<\/blockquote>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea9.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea9.png\" \/><\/span><\/span><\/p>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea10.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea10.png\" \/><\/span><\/span><\/p>\n<h5 class=\"md-end-block md-heading\">1.2\u6ce8\u9500<span spellcheck=\"false\"><code>logout(request)<\/code><\/span><\/h5>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u5982\u679c\u9700\u8981\u4f7f\u7528\u6ce8\u9500\u529f\u80fd,\u9700\u8981\u5bfc\u5165\u6a21\u5757<span spellcheck=\"false\"><code>from django.contrib.auth import logout<\/code><\/span><\/h5>\n<\/blockquote>\n<p><span class=\"md-line md-end-block\">\u4f7f\u7528\u6848\u4f8b<\/span><\/p>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-comment\">#coding=utf-8<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">shortcuts<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">render<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">http<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">HttpResponse<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">contrib<\/span>.<span class=\"cm-property\">auth<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">logout<\/span>\r\n<span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">index<\/span>(<span class=\"cm-variable\">request<\/span>):\r\n    <span class=\"cm-keyword\">if<\/span> <span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">user<\/span>:\r\n        <span class=\"cm-comment\">#logout(request) #\u672a\u542f\u52a8\u9000\u51fa\u767b\u9646<\/span>\r\n        <span class=\"cm-keyword\">print<\/span> <span class=\"cm-string\">'\u5f53\u524d\u767b\u5f55\u7684\u7528\u6237\u662f:'<\/span>,<span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">user<\/span>\r\n    <span class=\"cm-keyword\">else<\/span>:\r\n        <span class=\"cm-keyword\">print<\/span> <span class=\"cm-string\">'+++++'<\/span>\r\n    <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">HttpResponse<\/span>( <span class=\"cm-string\">'\u5f53\u524d\u767b\u5f55\u7684\u7528\u6237\u662f:'<\/span><span class=\"cm-operator\">+<\/span> <span class=\"cm-builtin\">str<\/span>(<span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">user<\/span>))<\/pre>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea11.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea11.png\" \/><\/span><\/span><\/p>\n<blockquote>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u5c06\u6ce8\u9500logout(request)\u542f\u7528\u540e,\u767b\u9646\u7528\u6237\u53d8\u6210\u4e86\u533f\u540d<\/span><\/h5>\n<\/blockquote>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea12.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea12.png\" \/><\/span><\/span><\/p>\n<h5 class=\"md-end-block md-heading\"><span spellcheck=\"false\"><code>User<\/code><\/span>\u6a21\u578b\u5e38\u7528\u5c5e\u6027\u548c\u65b9\u6cd5\uff1a<\/h5>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li class=\"\"><span class=\"md-line md-end-block\"><span spellcheck=\"false\"><code>username<\/code><\/span><span class=\"\">\uff1a\u7528\u6237\u540d\u3002<\/span><\/span><\/li>\n<li><span class=\"md-line md-end-block\"><span spellcheck=\"false\"><code>email<\/code><\/span>\uff1a\u90ae\u7bb1\u3002<\/span><\/li>\n<li><span class=\"md-line md-end-block\"><span spellcheck=\"false\"><code>groups<\/code><\/span>\uff1a\u591a\u5bf9\u591a\u7684\u7ec4\u3002<\/span><\/li>\n<li><span class=\"md-line md-end-block\"><span spellcheck=\"false\"><code>user_permissions<\/code><\/span>\uff1a\u591a\u5bf9\u591a\u7684\u7528\u6237\u6743\u9650\u3002<\/span><\/li>\n<li><span class=\"md-line md-end-block\"><span spellcheck=\"false\"><code>is_staff<\/code><\/span>\uff1a \u662f\u5426\u662f<span spellcheck=\"false\"><code>admin<\/code><\/span>\u7684\u7ba1\u7406\u5458\u3002<\/span><\/li>\n<li><span class=\"md-line md-end-block\"><span spellcheck=\"false\"><code>is_active<\/code><\/span>\uff1a \u662f\u5426\u6fc0\u6d3b\uff0c\u5224\u65ad\u8be5\u7528\u6237\u662f\u5426\u53ef\u7528\u3002<\/span><\/li>\n<li><span class=\"md-line md-end-block\"><span spellcheck=\"false\"><code>is_superuser<\/code><\/span>: \u662f\u5426\u662f\u8d85\u7ea7\u7528\u6237\u3002<\/span><\/li>\n<li><span class=\"md-line md-end-block\"><span spellcheck=\"false\"><code>last_login<\/code><\/span>\uff1a \u4e0a\u6b21\u767b\u5f55\u65f6\u95f4\u3002<\/span><\/li>\n<li><span class=\"md-line md-end-block\"><span spellcheck=\"false\"><code>date_joined<\/code><\/span>\uff1a \u6ce8\u518c\u65f6\u95f4\u3002<\/span><\/li>\n<li><span class=\"md-line md-end-block\"><span spellcheck=\"false\"><code>is_authenticated<\/code><\/span>\uff1a \u662f\u5426\u9a8c\u8bc1\u901a\u8fc7\u4e86\u3002<\/span><\/li>\n<li><span class=\"md-line md-end-block\"><span spellcheck=\"false\"><code>is_anonymous<\/code><\/span>\uff1a\u662f\u5426\u662f\u533f\u540d\u7528\u6237\u3002<\/span><\/li>\n<li><span class=\"md-line md-end-block\"><span spellcheck=\"false\"><code>set_password(raw_password)<\/code><\/span>\uff1a \u8bbe\u7f6e\u5bc6\u7801\uff0c\u4f20\u539f\u751f\u5bc6\u7801\u8fdb\u53bb\u3002<\/span><\/li>\n<li><span class=\"md-line md-end-block\"><span spellcheck=\"false\"><code>check_password(raw_password)<\/code><\/span>\uff1a \u68c0\u67e5\u5bc6\u7801\u3002<\/span><\/li>\n<li><span class=\"md-line md-end-block\"><span spellcheck=\"false\"><code>has_perm(perm)<\/code><\/span>\uff1a \u5224\u65ad\u7528\u6237\u662f\u5426\u6709\u67d0\u4e2a\u6743\u9650\u3002<\/span><\/li>\n<li><span class=\"md-line md-end-block\"><span spellcheck=\"false\"><code>has_perms(perm_list)<\/code><\/span>\uff1a \u5224\u65ad\u7528\u6237\u662f\u5426\u6709\u6743\u9650\u5217\u8868\u4e2d\u7684\u67d0\u4e2a\u5217\u8868\u3002<\/span><\/li>\n<\/ul>\n<h4 class=\"md-end-block md-heading\">2.\u6743\u9650permission<\/h4>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u8981\u4f7f\u7528\u6743\u9650\u7684\u8bdd,\u9700\u8981\u5728<span spellcheck=\"false\"><code>INSTALLED_APPS<\/code><\/span>\u5148\u542f\u7528<span spellcheck=\"false\"><code>django.contrib.contenttypes<\/code><\/span><\/h5>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li>\n<h5 class=\"md-end-block md-heading\">contenttypes\u662f\u7ba1\u7406\u8ba4\u8bc1,\u540e\u53f0,\u662f\u4e00\u4e2a\u66f4\u9ad8\u7ea7\u7684\u7c7b\u578b\u62bd\u8c61,\u7ba1\u7406\u6620\u5c04\u5173\u7cfb,\u4f7f\u7528\u4f55\u79cd\u7528\u6237,\u4f55\u79cd\u6a21\u578b,\u5982\u4f55\u5173\u8054\u8d77\u6765,\u5b83\u90fd\u6709\u7275\u7ebf\u6498\u6865\u7684\u4f5c\u7528.<\/h5>\n<\/li>\n<\/ul>\n<\/blockquote>\n<h5 class=\"md-end-block md-heading\">2.1\u521b\u5efa\u6743\u9650\u7684\u65b9\u6cd5<\/h5>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">myapp<\/span>.<span class=\"cm-property\">models<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">BlogPost<\/span> <span class=\"cm-comment\">#BlogPost\u662f\u9700\u8981\u521b\u5efa\u6743\u9650\u7684\u6a21\u578b<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">contrib<\/span>.<span class=\"cm-property\">auth<\/span>.<span class=\"cm-property\">models<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">Permission<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">contrib<\/span>.<span class=\"cm-property\">contenttypes<\/span>.<span class=\"cm-property\">models<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">ContentType<\/span> <span class=\"cm-comment\">#\u5bfc\u5165\u4e2d\u95f4\u6865\u6881<\/span>\r\n\u200b\r\n<span class=\"cm-variable\">content_type<\/span> = <span class=\"cm-variable\">ContentType<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">get_for_model<\/span>(<span class=\"cm-variable\">BlogPost<\/span>) <span class=\"cm-comment\">#\u4f7f\u7528get_for_model\u65b9\u6cd5,\u5c06\u6a21\u578b\u5173\u8054<\/span>\r\n<span class=\"cm-variable\">permission<\/span> = <span class=\"cm-variable\">Permission<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">create<\/span>( <span class=\"cm-comment\">#\u521b\u5efa\u6743\u9650<\/span>\r\n \u00a0  <span class=\"cm-variable\">codename<\/span>=<span class=\"cm-string\">'can_publish'<\/span>,             <span class=\"cm-comment\">#\u6743\u9650\u540d\u79f0<\/span>\r\n \u00a0  <span class=\"cm-variable\">name<\/span>=<span class=\"cm-string\">'Can Publish Posts'<\/span>,           <span class=\"cm-comment\">#\u6743\u9650\u7684\u63cf\u8ff0<\/span>\r\n \u00a0  <span class=\"cm-variable\">content_type<\/span>=<span class=\"cm-variable\">content_type<\/span>,          <span class=\"cm-comment\">#\u6743\u9650\u5173\u8054\u5230\u5bf9\u8c61<\/span>\r\n)<\/pre>\n<h5 class=\"md-end-block md-heading\">2.2\u6743\u9650\u5173\u8054\u5230\u7528\u6237<\/h5>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">ArticleModel\u6a21\u578b\u5b9a\u4e49\u4e864\u4e2a\u6743\u9650:<\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-comment\">#cms\/models.py<\/span>\r\n<span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">ArticleModel<\/span>(<span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">Model<\/span>):\r\n    <span class=\"cm-variable\">title<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">CharField<\/span>(<span class=\"cm-variable\">max_length<\/span>=<span class=\"cm-number\">100<\/span>)\r\n    <span class=\"cm-variable\">content<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">TextField<\/span>()\r\n    <span class=\"cm-variable\">create_time<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">DateTimeField<\/span>(<span class=\"cm-variable\">null<\/span>=<span class=\"cm-builtin\">True<\/span>,<span class=\"cm-variable\">auto_now_add<\/span>=<span class=\"cm-builtin\">True<\/span>)\r\n    <span class=\"cm-variable\">author<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">ForeignKey<\/span>(<span class=\"cm-string\">'AuthorModel'<\/span>,<span class=\"cm-variable\">null<\/span>=<span class=\"cm-builtin\">True<\/span>)\r\n    <span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">Meta<\/span>: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  <span class=\"cm-comment\">#\u5b9a\u4e49\u4e00\u4e2a\u5143\u7c7b<\/span>\r\n        <span class=\"cm-comment\"># 1.\u770b\u6587\u7ae0\u7684\u6743\u9650<\/span>\r\n        <span class=\"cm-comment\"># 2.\u4fee\u6539\u6587\u7ae0\u7684\u6743\u9650<\/span>\r\n        <span class=\"cm-comment\"># 3.\u5220\u9664\u6587\u7ae0\u7684\u6743\u9650<\/span>\r\n        <span class=\"cm-comment\"># 4.\u53d1\u5e03\u6587\u7ae0\u7684\u6743\u9650<\/span>\r\n        <span class=\"cm-variable\">permissions<\/span> = ( \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  <span class=\"cm-comment\">#\u5b9a\u4e49\u5b58\u653e\u6743\u9650\u7684\u5143\u7956<\/span>\r\n            (<span class=\"cm-string\">'watch_article'<\/span>,<span class=\"cm-string\">u'watch article'<\/span>),  <span class=\"cm-comment\">#\u6bcf\u4e2a\u6743\u9650\u5bf9\u5e94\u7684\u540d\u79f0,\u63cf\u8ff0<\/span>\r\n            (<span class=\"cm-string\">'update_article'<\/span>,<span class=\"cm-string\">u'\u4fee\u6539\u6587\u7ae0\u7684\u6743\u9650'<\/span>),\r\n            (<span class=\"cm-string\">'delete_article'<\/span>,<span class=\"cm-string\">u'\u5220\u9664\u6587\u7ae0\u7684\u6743\u9650'<\/span>),\r\n            (<span class=\"cm-string\">'add_article'<\/span>,<span class=\"cm-string\">u'\u53d1\u5e03\u6587\u7ae0\u7684\u6743\u9650'<\/span>),\r\n        )\r\n        <span class=\"cm-variable\">verbose_name<\/span>=<span class=\"cm-string\">'\u4e66\u7c4d'<\/span>\r\n        <span class=\"cm-variable\">verbose_name_plural<\/span>=<span class=\"cm-string\">'\u4e66\u7c4d'<\/span>\r\n    <span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">__unicode__<\/span>(<span class=\"cm-variable-2\">self<\/span>):\r\n        <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable-2\">self<\/span>.<span class=\"cm-property\">title<\/span><\/pre>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u73b0\u5728\u9700\u8981\u5c06\u53d1\u8868\u6587\u7ae0\u7684\u6743\u9650<span spellcheck=\"false\"><code>add_article<\/code><\/span>\u8d4b\u7ed9\u7528\u6237<span spellcheck=\"false\"><code>laocao<\/code><\/span><\/h5>\n<\/blockquote>\n<p><span class=\"md-line md-end-block\">\u901a\u8fc7\u63a7\u5236\u53f0\u64cd\u4f5c<\/span><\/p>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">article<\/span>.<span class=\"cm-property\">models<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">ArticleModel<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">contrib<\/span>.<span class=\"cm-property\">auth<\/span>.<span class=\"cm-property\">models<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">User<\/span>,<span class=\"cm-variable\">Permission<\/span>,<span class=\"cm-variable\">Group<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">contrib<\/span>.<span class=\"cm-property\">contenttypes<\/span>.<span class=\"cm-property\">models<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">ContentType<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">content_type<\/span>=<span class=\"cm-variable\">ContentType<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">get_for_models<\/span>(<span class=\"cm-variable\">ArticleModel<\/span>)<span class=\"cm-comment\">#\u65b0\u589econtenttype,\u5173\u8054\u6570\u636e\u5e93ArticleModel<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">permission<\/span>=<span class=\"cm-variable\">Permission<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-variable\">codename<\/span>=<span class=\"cm-string\">'add_article'<\/span>) <span class=\"cm-comment\">#\u5c06\u6743\u9650add_article\u53d6\u51fa\u5230permission<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">u<\/span>=<span class=\"cm-variable\">User<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-variable\">username<\/span>=<span class=\"cm-string\">'laocao'<\/span>) <span class=\"cm-comment\">#\u83b7\u53d6\u7528\u6237\u5bf9\u8c61<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">u<\/span>\r\n<span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">User<\/span>: <span class=\"cm-variable\">laocao<\/span><span class=\"cm-operator\">&gt;<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">u<\/span>.<span class=\"cm-property\">user_permissions<\/span>.<span class=\"cm-property\">add<\/span>(<span class=\"cm-variable\">permission<\/span>)  <span class=\"cm-comment\">#\u4f7f\u7528user_permissions.add\u65b9\u6cd5\u628a\u6743\u9650\u8d4b\u7ed9\u7528\u6237laocao<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">u<\/span>.<span class=\"cm-property\">save<\/span>() <span class=\"cm-comment\">#\u4fdd\u5b58,\u67e5\u8be2\u6709\u4ec0\u4e48\u6743\u9650<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">u<\/span>.<span class=\"cm-property\">get_all_permissions<\/span>()\r\n<span class=\"cm-builtin\">set<\/span>([<span class=\"cm-string\">u'article.add_article'<\/span>])<\/pre>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea13.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea13.png\" \/><\/span><\/span><\/p>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea14.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea14.png\" \/><\/span><\/span><\/p>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u6743\u9650\u589e\u52a0\u6210\u529f\u4e86.\u4ee3\u7801\u5b9e\u73b0\u7684\u903b\u8f91\u662f:<\/h5>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u901a\u8fc7\u88c5\u9970\u5668permission_required\u68c0\u67e5\u7528\u6237\u6743\u9650request.user_permission\u5b57\u5178\u4e2d\u662f\u5426\u6709ariticle.add_article\u8fd9\u4e2a\u6743\u9650,\u5982\u679c\u6709\u5c31\u6267\u884c\u4e0b\u9762\u7684\u64cd\u4f5c,\u5426\u5219\u5c31\u4e0d\u6267\u884c<\/span><\/h5>\n<\/li>\n<\/ul>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-meta\">@permission_required<\/span>(<span class=\"cm-string\">'article.add_article'<\/span>) <span class=\"cm-comment\">#\u4f7f\u7528\u88c5\u9970\u5668,\u68c0\u67e5\u662f\u5426\u6709\u589e\u52a0\u6587\u7ae0\u7684\u6743\u9650(\u524d\u9762\u8d4b\u503c\u7ed9\u4e86laocao)<\/span>\r\n<span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">add<\/span>(<span class=\"cm-variable\">request<\/span>):\r\n    <span class=\"cm-keyword\">if<\/span> <span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">method<\/span> == <span class=\"cm-string\">'GET'<\/span>:\r\n        <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">render<\/span>(<span class=\"cm-variable\">request<\/span>,<span class=\"cm-string\">'cms_add.html'<\/span>) <span class=\"cm-comment\">#\u9996\u6b21\u8bf7\u6c42add,\u5982\u679c\u6709\u6743\u9650,\u90a3\u4e48\u8fd4\u56de\u589e\u52a0\u6587\u7ae0\u7684\u754c\u9762.<\/span>\r\n    <span class=\"cm-keyword\">else<\/span>:\r\n        <span class=\"cm-variable\">form<\/span> = <span class=\"cm-variable\">AddArticleForm<\/span>(<span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">POST<\/span>) <span class=\"cm-comment\">#\u4ece\u53d6\u51fa\u524d\u53f0\u4f20\u8fc7\u6765\u7684\u5305\u542b\u6587\u7ae0\u6807\u9898,\u5185\u5bb9\u7684\u5b57\u5178\u5bf9\u8c61,\u4f20\u7ed9\u8868\u5355form<\/span>\r\n        <span class=\"cm-keyword\">if<\/span> <span class=\"cm-variable\">form<\/span>.<span class=\"cm-property\">is_valid<\/span>():\r\n            <span class=\"cm-variable\">title<\/span> = <span class=\"cm-variable\">form<\/span>.<span class=\"cm-property\">cleaned_data<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-string\">'title'<\/span>,<span class=\"cm-builtin\">None<\/span>)\r\n            <span class=\"cm-variable\">content<\/span> = <span class=\"cm-variable\">form<\/span>.<span class=\"cm-property\">cleaned_data<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-string\">'content'<\/span>,<span class=\"cm-builtin\">None<\/span>)\r\n            <span class=\"cm-variable\">articleModel<\/span> = <span class=\"cm-variable\">ArticleModel<\/span>(<span class=\"cm-variable\">title<\/span>=<span class=\"cm-variable\">title<\/span>,<span class=\"cm-variable\">content<\/span>=<span class=\"cm-variable\">content<\/span>) <span class=\"cm-comment\">#\u4fdd\u5b58\u5230\u6570\u636e\u5e93<\/span>\r\n            <span class=\"cm-variable\">articleModel<\/span>.<span class=\"cm-property\">save<\/span>()\r\n            <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">redirect<\/span>(<span class=\"cm-variable\">reverse<\/span>(<span class=\"cm-string\">'cms_index'<\/span>)) <span class=\"cm-comment\">#\u8fd4\u56de\u4e3b\u9875<\/span>\r\n        <span class=\"cm-keyword\">else<\/span>:\r\n            <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">render<\/span>(<span class=\"cm-variable\">request<\/span>,<span class=\"cm-string\">'cms_add.html'<\/span>,{<span class=\"cm-string\">'errors'<\/span>:<span class=\"cm-variable\">form<\/span>.<span class=\"cm-property\">errors<\/span>}) <span class=\"cm-comment\">#\u5426\u5219\u62a5\u9519<\/span><\/pre>\n<h4 class=\"md-end-block md-heading\">3.\u7b56\u7565\u7ec4Group<\/h4>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u5f53\u6709\u591a\u4e2a\u7528\u6237\u8981\u5b9e\u73b0\u540c\u6837\u7684\u6743\u9650\u65f6,\u5355\u4e2a\u64cd\u4f5c\u5e76\u4e0d\u662f\u6700\u597d\u7684\u529e\u6cd5,\u901a\u8fc7\u521b\u9020\u4e00\u4e2a\u7ec4,\u5e76\u628a\u7528\u6237\u6dfb\u52a0\u5230\u7ec4\u91cc\u662f\u4e00\u4e2a\u4e0d\u9519\u7684\u65b9\u6cd5.<\/h5>\n<\/blockquote>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u65b0\u589e\u4e00\u4e2a\u7ec4xiaobian,\u5c06\u65b0\u589e\u7684\u7528\u6237fuyun\u6dfb\u52a0\u5230\u8fd9\u4e2a\u7ec4,\u8be5\u7ec4\u6210\u5458\u53ef\u4ee5\u5b9e\u73b0\u5220\u9664\u64cd\u4f5c.<\/span><\/h5>\n<\/li>\n<\/ul>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">u<\/span>=<span class=\"cm-variable\">User<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">create_user<\/span>(<span class=\"cm-variable\">username<\/span>=<span class=\"cm-string\">'fuyun'<\/span>,<span class=\"cm-variable\">password<\/span>=<span class=\"cm-string\">'123'<\/span>) <span class=\"cm-comment\">#\u65b0\u5efa\u7528\u6237fuyun\u7ed9u<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">u<\/span>.<span class=\"cm-property\">save<\/span>()\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">p<\/span>=<span class=\"cm-variable\">Permission<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-variable\">codename<\/span>=<span class=\"cm-string\">'delete_article'<\/span>) <span class=\"cm-comment\">#\u4ece\u6743\u9650\u4e2d\u53d6\u51fa\u5220\u9664delete_article\u6743\u9650\u7ed9p<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">g<\/span>=<span class=\"cm-variable\">Group<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">create<\/span>(<span class=\"cm-variable\">name<\/span>=<span class=\"cm-string\">'xiaobian'<\/span>) <span class=\"cm-comment\">#\u65b0\u5efa\u7528\u6237xiaobian\u8d4b\u503c\u7ed9\u5bf9\u8c61g<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">g<\/span>.<span class=\"cm-property\">permissions<\/span>.<span class=\"cm-property\">add<\/span>(<span class=\"cm-variable\">p<\/span>) <span class=\"cm-comment\">#\u5c06\u5220\u9664\u6743\u9650p\u5bf9\u8c61\u6dfb\u52a0\u5230xiaobian\u7ec4\u91ccg<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">g<\/span>.<span class=\"cm-property\">user_set<\/span>.<span class=\"cm-property\">add<\/span>(<span class=\"cm-variable\">u<\/span>) <span class=\"cm-comment\">#\u5c06\u7528\u6237fuyun\u6dfb\u52a0\u5230xiaobian\u7ec4\u91cc<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">g<\/span>.<span class=\"cm-property\">save<\/span>()\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">g<\/span>.<span class=\"cm-property\">permissions<\/span>.<span class=\"cm-property\">all<\/span>()\r\n<span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">QuerySet<\/span> [<span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">Permission<\/span>: <span class=\"cm-variable\">article<\/span> <span class=\"cm-operator\">|<\/span> <span class=\"cm-error\">\u4e66\u7c4d<\/span> <span class=\"cm-operator\">|<\/span> <span class=\"cm-error\">\u5220\u9664\u6587\u7ae0\u7684\u6743\u9650<\/span><span class=\"cm-operator\">&gt;<\/span>]<span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-comment\">#\u6743\u9650\u65f6\u653e\u5728xiaobian\u7ec4\u91cc\u7684<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">u<\/span>.<span class=\"cm-property\">user_permissions<\/span>.<span class=\"cm-property\">all<\/span>() <span class=\"cm-comment\">#\u5b9e\u9645\u4e0a,\u7528\u6237funyun\u6ca1\u6709\u4e2a\u5220\u9664\u6743\u9650,\u800c\u662f\u7ee7\u627f\u4e86\u7ec4\u91cc\u7684\u5220\u9664\u6743\u9650<\/span>\r\n<span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">QuerySet<\/span> []<span class=\"cm-operator\">&gt;<\/span><\/pre>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u767b\u9646fuyun\u540e,\u5373\u53ef\u5b8c\u6210\u5220\u9664\u64cd\u4f5c.<\/h5>\n<\/blockquote>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea15.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea15.png\" \/><\/span><\/span><\/p>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea16.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea16.png\" \/><\/span><\/span><\/p>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea17.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/09\/namea17.png\" \/><\/span><\/span><\/p>\n<h4 class=\"md-end-block md-heading\">\u4f5c\u4e1a:<\/h4>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">1.\u70b9\u51fb\u5220\u9664\u540e,\u53ef\u4ee5\u5c06\u6587\u7ae0\u4ece\u6570\u636e\u5e93\u4e2d\u5220\u9664<\/span><\/h5>\n<pre class=\"md-fences md-end-block\" lang=\"html\" contenteditable=\"false\"><span class=\"cm-meta\">&lt;!DOCTYPE html&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">html<\/span> <span class=\"cm-attribute\">lang<\/span>=<span class=\"cm-string\">\"en\"<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">head<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">meta<\/span> <span class=\"cm-attribute\">charset<\/span>=<span class=\"cm-string\">\"UTF-8\"<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">title<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\u6587\u7ae0\u5217\u8868<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">title<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">head<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">body<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n \u00a0  <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">center<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">h1<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\u6587\u7ae0\u5217\u8868<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">h1<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n \u00a0  <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">p<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\u5f53\u524d\u767b\u5f55\u7684\u7528\u6237\u662f{{ request.user }}<span class=\"cm-atom\">&amp;nbsp;<\/span><span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">a<\/span> <span class=\"cm-attribute\">href<\/span>=<span class=\"cm-string\">\"add\/\"<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\u589e\u52a0\u6587\u7ae0<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">a<\/span><span class=\"cm-tag cm-bracket\">&gt;&lt;\/<\/span><span class=\"cm-tag\">p<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n\u200b\r\n    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">table<\/span> <span class=\"cm-attribute\">border<\/span>=<span class=\"cm-string\">\"1\"<\/span> <span class=\"cm-attribute\">style<\/span>=<span class=\"cm-string\">\"border-collapse: collapse\"<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n        <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">tbody<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n            {% for article in articlelist %}\r\n                <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">tr<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n                    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>{{article.title}}<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n                    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>{{article.create_time}}<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n                    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n                        <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">a<\/span> <span class=\"cm-attribute\">href<\/span>=<span class=\"cm-string\">\"edit\/?id={{ article.id }}\"<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\u7f16\u8f91<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">a<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span><span class=\"cm-atom\">&amp;nbsp;<\/span>|<span class=\"cm-atom\">&amp;nbsp;<\/span>\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">a<\/span> <span class=\"cm-attribute\">href<\/span>=<span class=\"cm-string\">\"delete\/?id={{article.id}}\"<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\u5220\u9664<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">a<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span> \r\n                    <span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n                <span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">tr<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n            {% endfor %}\r\n        <span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">tbody<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n    <span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">table<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n  <span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">center<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">body<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">html<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span><\/pre>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u89c6\u56fe\u51fd\u6570delete\u5b9e\u73b0\u7684\u903b\u8f91<\/h5>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li>\n<h5 class=\"md-end-block md-heading\">\u901a\u8fc7\u524d\u7aef\u4f20\u8fc7\u6765\u7684id<\/h5>\n<\/li>\n<li>\n<h5 class=\"md-end-block md-heading\">\u901a\u8fc7id\u67e5\u8be2\u5bf9\u5e94\u7684\u6587\u7ae0\u8bb0\u5f55<\/h5>\n<\/li>\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u901a\u8fc7id\u5220\u9664<\/span><\/h5>\n<\/li>\n<\/ul>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">delete<\/span>(<span class=\"cm-variable\">request<\/span>):\r\n    <span class=\"cm-builtin\">id<\/span>=<span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">GET<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-string\">'id'<\/span>)\r\n    <span class=\"cm-variable\">p<\/span>=<span class=\"cm-variable\">ArticleModel<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">filter<\/span>(<span class=\"cm-builtin\">id<\/span>=<span class=\"cm-builtin\">id<\/span>).<span class=\"cm-property\">first<\/span>()\r\n    <span class=\"cm-variable\">title<\/span>=<span class=\"cm-variable\">p<\/span>.<span class=\"cm-property\">title<\/span>\r\n    <span class=\"cm-variable\">p<\/span>.<span class=\"cm-property\">delete<\/span>()\r\n    <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">HttpResponse<\/span>(<span class=\"cm-string\">u'\u6587\u7ae0&lt;&lt;%s&gt;&gt;\u5df2\u7ecf\u88ab\u5220\u9664'<\/span><span class=\"cm-operator\">%<\/span><span class=\"cm-variable\">title<\/span>)<\/pre>\n<h5 class=\"md-end-block md-heading\">2.\u70b9\u51fb\u7f16\u8f91\u540e,\u53ef\u4ee5\u4fee\u6539\u6587\u7ae0,\u5e76\u4fdd\u5b58\u5230\u6570\u636e\u5e93<\/h5>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u5f80\u6a21\u677f\u4e2d\u589e\u52a0\u4e00\u4e2a\u7f16\u8f91\u7684\u9875\u9762<\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"html\" contenteditable=\"false\">#cms_edit.html\r\n<span class=\"cm-meta\">&lt;!DOCTYPE html&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">html<\/span> <span class=\"cm-attribute\">lang<\/span>=<span class=\"cm-string\">\"en\"<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">head<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">meta<\/span> <span class=\"cm-attribute\">charset<\/span>=<span class=\"cm-string\">\"UTF-8\"<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">title<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\u7f16\u8f91\u6587\u7ae0<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">title<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">head<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">body<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">h1<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\u7f16\u8f91\u6587\u7ae0<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">h1<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">table<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n        <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">tbody<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n            <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">form<\/span> <span class=\"cm-attribute\">method<\/span>=<span class=\"cm-string\">\"post\"<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {% csrf_token %}\r\n                <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">tr<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">input<\/span> <span class=\"cm-attribute\">type<\/span>=<span class=\"cm-string\">\"hidden\"<\/span> <span class=\"cm-attribute\">name<\/span>=<span class=\"cm-string\">\"id\"<\/span> <span class=\"cm-attribute\">value<\/span>=<span class=\"cm-string\">\"{{ id }}\"<\/span><span class=\"cm-tag cm-bracket\">\/&gt;<\/span>\r\n                    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\u6807\u9898\uff1a<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n                    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;&lt;<\/span><span class=\"cm-tag\">input<\/span> <span class=\"cm-attribute\">type<\/span>=<span class=\"cm-string\">\"text\"<\/span> <span class=\"cm-attribute\">name<\/span>=<span class=\"cm-string\">'title'<\/span><span class=\"cm-attribute\">value<\/span>=<span class=\"cm-string\">\"{{ title }}\"<\/span><span class=\"cm-tag cm-bracket\">&gt;&lt;\/<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n                <span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">tr<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n                <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">tr<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n                    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\u5185\u5bb9\uff1a<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n                    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;&lt;<\/span><span class=\"cm-tag\">textarea<\/span> <span class=\"cm-attribute\">name<\/span>=<span class=\"cm-string\">\"content\"<\/span> <span class=\"cm-attribute\">id<\/span>=<span class=\"cm-string\">\"\"<\/span> <span class=\"cm-attribute\">cols<\/span>=<span class=\"cm-string\">\"30\"<\/span> <span class=\"cm-attribute\">rows<\/span>=<span class=\"cm-string\">\"10\"<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>{{ content }}<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">textarea<\/span><span class=\"cm-tag cm-bracket\">&gt;&lt;\/<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n                <span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">tr<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n                <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">tr<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n                    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;&lt;\/<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n                    <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;&lt;<\/span><span class=\"cm-tag\">input<\/span> <span class=\"cm-attribute\">type<\/span>=<span class=\"cm-string\">\"submit\"<\/span> <span class=\"cm-attribute\">value<\/span>=<span class=\"cm-string\">'\u63d0\u4ea4'<\/span><span class=\"cm-tag cm-bracket\">&gt;&lt;\/<\/span><span class=\"cm-tag\">td<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n                <span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">tr<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n            <span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">form<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n        <span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">tbody<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n        <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">p<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n            {% if errors %}\r\n                {{errors}}\r\n            {% endif %}\r\n        <span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">p<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n    <span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">table<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">body<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag\">html<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span><\/pre>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u4eceedit\u4e2d\u6e32\u67d3<\/h5>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li>\n<h5 class=\"md-end-block md-heading\">\u5982\u679c\u8bf7\u6c42\u662fget,\u5219\u4ece\u6570\u636e\u5e93\u4e2d\u53d6\u51fa\u5bf9\u5e94\u7684id\u7684\u8bb0\u5f55<\/h5>\n<\/li>\n<li>\n<h5 class=\"md-end-block md-heading\">\u5c06\u8bb0\u5f55\u6e32\u67d3\u5230\u7f16\u8f91\u6a21\u677f\u9875\u9762<\/h5>\n<\/li>\n<li>\n<h5 class=\"md-end-block md-heading\">\u6587\u7ae0\u88ab\u4fee\u6539\u540e,\u901a\u8fc7post\u8bf7\u6c42\u63d0\u4ea4\u8868\u5355<\/h5>\n<\/li>\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\">\u5165\u5e93\u6210\u529f\u540e,\u8fd4\u56de\u6587\u7ae0\u5217\u8868\u9875\u9762<\/h5>\n<\/li>\n<\/ul>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">edit<\/span>(<span class=\"cm-variable\">request<\/span>):\r\n    <span class=\"cm-keyword\">if<\/span> <span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">method<\/span>==<span class=\"cm-string\">'GET'<\/span>:\r\n        <span class=\"cm-builtin\">id<\/span>=<span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">GET<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-string\">'id'<\/span>)\r\n        <span class=\"cm-variable\">p<\/span>=<span class=\"cm-variable\">ArticleModel<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">filter<\/span>(<span class=\"cm-builtin\">id<\/span>=<span class=\"cm-builtin\">id<\/span>).<span class=\"cm-property\">first<\/span>()\r\n        <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">render<\/span>(<span class=\"cm-variable\">request<\/span>,<span class=\"cm-string\">'cms_edit.html'<\/span>,{<span class=\"cm-string\">'id'<\/span>:<span class=\"cm-builtin\">id<\/span>,<span class=\"cm-string\">'title'<\/span>:<span class=\"cm-variable\">p<\/span>.<span class=\"cm-property\">title<\/span>,<span class=\"cm-string\">'content'<\/span>:<span class=\"cm-variable\">p<\/span>.<span class=\"cm-property\">title<\/span>})\r\n    <span class=\"cm-keyword\">else<\/span>:\r\n        <span class=\"cm-builtin\">id<\/span>=<span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">POST<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-string\">'id'<\/span>)\r\n        <span class=\"cm-variable\">p<\/span>=<span class=\"cm-variable\">ArticleModel<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">filter<\/span>(<span class=\"cm-builtin\">id<\/span>=<span class=\"cm-builtin\">id<\/span>).<span class=\"cm-property\">first<\/span>()\r\n        <span class=\"cm-variable\">p<\/span>.<span class=\"cm-property\">title<\/span>=<span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">POST<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-string\">'title'<\/span>)\r\n        <span class=\"cm-variable\">p<\/span>.<span class=\"cm-property\">content<\/span>=<span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">POST<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-string\">'content'<\/span>)\r\n        <span class=\"cm-variable\">p<\/span>.<span class=\"cm-property\">create_time<\/span>=<span class=\"cm-variable\">datetime<\/span>.<span class=\"cm-property\">datetime<\/span>.<span class=\"cm-property\">now<\/span>()\r\n        <span class=\"cm-variable\">p<\/span>.<span class=\"cm-property\">save<\/span>()\r\n        <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">redirect<\/span>(<span class=\"cm-variable\">reverse<\/span>(<span class=\"cm-string\">'cms_index'<\/span>))<\/pre>\n<h2 class=\"md-end-block md-heading\"><span class=\"\">\u603b\u7ed3<\/span><\/h2>\n<blockquote>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">Django\u7684auth\u8ba4\u8bc1\u7cfb\u7edf\u662f\u975e\u5e38\u5b9e\u7528\u7684\u6a21\u5757,\u5305\u542b\u4e86\u7528\u6237,\u6743\u9650,\u7ec4.\u5c5e\u4e8e\u6bd4\u8f83\u96be\u7406\u89e3\u548c\u638c\u63e1\u7684\u90e8\u5206,\u6d89\u53ca\u5230\u77e5\u8bc6\u9762\u66f4\u8981\u6c42\u7efc\u5408\u6027,\u719f\u6089\u638c\u63e1\u5bf9\u4e8e\u5f00\u53d1\u7ef4\u62a4\u6709\u5f88\u5927\u5e2e\u52a9.<\/span><\/h5>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>1.user\u7528\u6237 Django\u63d0\u4f9b\u7684\u8ba4\u8bc1\u7cfb\u7edf\u662f\u4e00\u4e2a\u5e94\u7528,\u4f4d\u4e8esettings.py\u7684\u5df2\u5b89\u88c5\u5e94\u7528django.contrib.auth,auth\u63d0\u4f9b\u4e86\u540e\u53f0\u7ba1\u7406\u673a\u5236,\u5f00\u53d1\u4e2d\u5e38\u7528,\u5185\u90e8\u673a\u5236\u590d\u6742,\u4f46\u662f\u4f7f\u7528\u7b80\u5355,\u800c\u4e14\u6bd4\u8f83\u91cd\u8981.\u8ba4\u8bc1\u6784\u5efa\u4e86\u4e00\u4e2a\u6a21\u578b,\u5206\u4e09 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[54],"tags":[],"_links":{"self":[{"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=\/wp\/v2\/posts\/1475"}],"collection":[{"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1475"}],"version-history":[{"count":2,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=\/wp\/v2\/posts\/1475\/revisions"}],"predecessor-version":[{"id":1492,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=\/wp\/v2\/posts\/1475\/revisions\/1492"}],"wp:attachment":[{"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1475"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}