{"id":1375,"date":"2017-09-08T04:05:00","date_gmt":"2017-09-07T20:05:00","guid":{"rendered":"http:\/\/www.yueguangzu.net\/?p=1375"},"modified":"2017-09-09T12:44:46","modified_gmt":"2017-09-09T04:44:46","slug":"django%e7%b3%bb%e5%88%97-cookiesession","status":"publish","type":"post","link":"http:\/\/www.yueguangzu.net\/?p=1375","title":{"rendered":"[Django\u7cfb\u5217]10.Django\u7684cookie,session"},"content":{"rendered":"<h4 class=\"md-end-block md-heading md-focus\"><span class=\"md-expand\">1.cookie\u7684\u539f\u7406<\/span><\/h4>\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\/namec1.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\/namec1.png\" \/><\/span><\/span><\/p>\n<blockquote>\n<h4 class=\"md-end-block md-heading\"><span class=\"\"> \u5ba2\u6237\u7aef\u767b\u9646\u5230\u670d\u52a1\u5668\u540e,\u670d\u52a1\u5668\u4f1a\u521b\u5efa\u4e00\u4e2acookie,\u91cc\u9762\u8bb0\u8f7d\u7740\u767b\u9646\u7684\u7528\u6237\u540d,\u5bc6\u7801\u7b49\u4fe1\u606f,\u4f20\u7ed9\u5ba2\u6237\u7aef\u4fdd\u5b58\u5230\u672c\u5730,\u5ba2\u6237\u7aef\u4e0b\u6b21\u548c\u670d\u52a1\u5668\u7684\u901a\u4fe1,\u5c31\u4f1a\u643a\u5e26\u7740\u8fd9\u4e2a\u8bb0\u5f55\u4e86\u7528\u6237\u540d\u548c\u5bc6\u7801\u4fe1\u606f\u7684cookie,\u53bb\u8bbf\u95ee\u670d\u52a1\u5668,\u670d\u52a1\u5668\u5c31\u4f1a\u8bc6\u522b\u5230\u662f\u54ea\u4e2a\u7528\u6237\u8bbf\u95ee.<\/span><\/h4>\n<\/blockquote>\n<h4 class=\"md-end-block md-heading\"><span class=\"\">2.session\u7684\u539f\u7406<\/span><\/h4>\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\/namec2.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\/namec2.png\" \/><\/span><\/span><\/p>\n<blockquote>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u91c7\u7528\u4e86session\u4f1a\u8bdd\u673a\u5236\u540e,\u7528\u6237\u767b\u9646\u5230\u670d\u52a1\u5668\u540e,\u670d\u52a1\u5668\u4f1a\u521b\u5efa\u4e00\u4e2a\u8868,\u8bb0\u5f55\u7740\u7528\u6237\u7684sessionid(\u4f1a\u8bddid)\u548c\u7528\u6237\u540d\u7684\u5173\u7cfb.\u540c\u65f6\u521b\u5efa\u5e26\u6709\u8fd9\u4e2asessionid\u7684cookie\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef.\u5ba2\u6237\u7aef\u4e0b\u6b21\u901a\u4fe1\u7684\u65f6\u5019,\u53ea\u9700\u8981\u643a\u5e26\u8fd9\u4e2asessionid\u7684cookie\u8bbf\u95ee,\u670d\u52a1\u5668\u6839\u636esessionid\u627e\u5230\u5bf9\u5e94\u8868\u4e2d\u7684\u4f1a\u8bddid\u662f\u5426\u5b58\u5728,\u6765\u8bc6\u522b\u65f6\u54ea\u4e2a\u7528\u6237\u8bbf\u95ee.\u5982\u679c\u8868\u4e2d\u4e0d\u5b58\u5728,\u5219\u8bf4\u660e\u7528\u6237\u6ca1\u6709\u767b\u5f55,\u6216\u8005\u767b\u5f55\u5df2\u8fc7\u671f,\u9700\u8981\u91cd\u65b0\u767b\u9646.<\/span><\/h5>\n<\/blockquote>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">HttpRequest\u5bf9\u8c61\u7684<span spellcheck=\"false\"><code>request.session<\/code><\/span><\/h5>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">HttpResponse\u5bf9\u8c61\u7684<\/span><span spellcheck=\"false\"><code>set_cookie<\/code><\/span>,<span spellcheck=\"false\"><code>delete_cookie<\/code><\/span><\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-number\">1.<\/span><span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">session<\/span><span class=\"cm-error\">\uff1a\u8fd4\u56de\u4e00\u4e2a<\/span><span class=\"cm-variable\">QueryDict<\/span><span class=\"cm-error\">\u7684\u7c7b\u5b57\u5178\u7c7b\u578b\u7684\u96c6\u5408\uff0c\u8fd9\u4e2a\u5c5e\u6027\u8981\u6709\u6548\uff0c\u5fc5\u987b\u6dfb\u52a0<\/span><span class=\"cm-variable\">SessionMiddleware<\/span><span class=\"cm-error\">\u8fd9\u4e2a\u4e2d\u95f4\u4ef6\u3002<\/span>\r\n\u200b\r\n<span class=\"cm-number\">2.<\/span><span class=\"cm-variable\">set_cookie<\/span>(<span class=\"cm-variable\">key<\/span>,<span class=\"cm-variable\">value<\/span>=<span class=\"cm-error\">\u2019\u2019<\/span>,<span class=\"cm-variable\">max_age<\/span>=<span class=\"cm-builtin\">None<\/span>,<span class=\"cm-variable\">expires<\/span>=<span class=\"cm-builtin\">None<\/span>,<span class=\"cm-variable\">path<\/span>=<span class=\"cm-error\">\u2019<\/span><span class=\"cm-operator\">\/<\/span><span class=\"cm-error\">\u2019<\/span>,<span class=\"cm-variable\">domain<\/span>=<span class=\"cm-builtin\">None<\/span>,<span class=\"cm-variable\">secure<\/span>=<span class=\"cm-builtin\">None<\/span>,<span class=\"cm-variable\">httponly<\/span>=<span class=\"cm-builtin\">False<\/span>)\r\n\u200b\r\n<span class=\"cm-error\">\u8bbe\u7f6e<\/span><span class=\"cm-variable\">cookie<\/span><span class=\"cm-error\">\u7684\u65b9\u6cd5\u3002<\/span>\r\n<span class=\"cm-variable\">key<\/span><span class=\"cm-error\">\uff1a<\/span><span class=\"cm-variable\">cookie<\/span><span class=\"cm-error\">\u7684<\/span><span class=\"cm-variable\">key<\/span><span class=\"cm-error\">\u3002<\/span>\r\n<span class=\"cm-variable\">value<\/span><span class=\"cm-error\">\uff1a<\/span><span class=\"cm-variable\">cookie<\/span><span class=\"cm-error\">\u7684<\/span><span class=\"cm-variable\">value<\/span><span class=\"cm-error\">\u3002<\/span>\r\n<span class=\"cm-variable\">max_age<\/span><span class=\"cm-error\">\uff1a<\/span><span class=\"cm-variable\">cookie<\/span><span class=\"cm-error\">\u6700\u5927\u7684\u8fc7\u671f\u65f6\u95f4\u3002<\/span>\r\n<span class=\"cm-variable\">expires<\/span><span class=\"cm-error\">\uff1a<\/span><span class=\"cm-variable\">cookie<\/span><span class=\"cm-error\">\u7684\u8fc7\u671f\u65f6\u95f4\u548c\u65e5\u671f\u3002<\/span>\r\n<span class=\"cm-variable\">path<\/span><span class=\"cm-error\">\uff1a\u9488\u5bf9\u54ea\u4e2a\u76ee\u5f55\u4e0b\u6709\u6548\u679c\u3002<\/span>\r\n<span class=\"cm-variable\">domain<\/span><span class=\"cm-error\">\uff1a\u57df\u540d\uff0c\u5982\u679c\u4f60\u60f3\u8de8\u57df\u4f7f\u7528<\/span><span class=\"cm-variable\">cookie<\/span><span class=\"cm-error\">\uff0c\u5fc5\u987b\u8bbe\u7f6e\u8fd9\u4e2a\u503c\uff0c\u6bd4\u5982<\/span><span class=\"cm-variable\">domain<\/span>=<span class=\"cm-error\">\u201d<\/span>.<span class=\"cm-property\">lawrence<\/span>.<span class=\"cm-property\">com<\/span><span class=\"cm-error\">\u201d\uff0c\u90a3\u4e48<\/span><span class=\"cm-variable\">www<\/span>.<span class=\"cm-property\">lawrence<\/span>.<span class=\"cm-property\">com<\/span><span class=\"cm-error\">\u548c<\/span><span class=\"cm-variable\">blogs<\/span>.<span class=\"cm-property\">lawrence<\/span>.<span class=\"cm-property\">com<\/span><span class=\"cm-error\">\u548c<\/span><span class=\"cm-variable\">calendars<\/span>.<span class=\"cm-property\">lawrence<\/span>.<span class=\"cm-property\">com<\/span><span class=\"cm-error\">\u90fd\u53ef\u4ee5\u8bbf\u95ee\u5230\u8fd9\u4e2a<\/span><span class=\"cm-variable\">cookie<\/span><span class=\"cm-error\">\u3002<\/span>\r\n<span class=\"cm-variable\">httponly<\/span><span class=\"cm-error\">\uff1a\u5982\u679c\u8bbe\u7f6e\u4e3a<\/span><span class=\"cm-builtin\">True<\/span><span class=\"cm-error\">\uff0c\u5ba2\u6237\u7aef\u7684<\/span><span class=\"cm-variable\">js<\/span><span class=\"cm-error\">\u4ee3\u7801\u5c06\u4e0d\u80fd\u8bbf\u95ee\u5230<\/span><span class=\"cm-variable\">cookie<\/span><span class=\"cm-error\">\u3002<\/span>\r\n\u200b\r\n<span class=\"cm-number\">3.<\/span> <span class=\"cm-variable\">delete_cookie<\/span>(<span class=\"cm-variable\">key<\/span>,<span class=\"cm-variable\">path<\/span>=<span class=\"cm-error\">\u2019<\/span><span class=\"cm-operator\">\/<\/span><span class=\"cm-error\">\u2019<\/span>,<span class=\"cm-variable\">domain<\/span>=<span class=\"cm-builtin\">None<\/span>)<span class=\"cm-error\">\uff1a\u5220\u9664<\/span><span class=\"cm-variable\">cookie<\/span><span class=\"cm-error\">\u3002<\/span>\r\n\u200b<\/pre>\n<h2 class=\"md-end-block md-heading\">\u5b9e\u6218<\/h2>\n<h3 class=\"md-end-block md-heading\"><span class=\"\">\u521b\u5efa\u4e00\u4e2a\u4e3b\u9875,\u5982\u679c\u7528\u6237\u5df2\u7ecf\u767b\u9646,\u5219\u8df3\u8f6c\u5230\u4e3b\u9875,\u5982\u679c\u7528\u6237\u6ca1\u6709\u767b\u9646,\u5219\u8df3\u8f6c\u5230\u767b\u9646\u9875\u9762,\u767b\u9646\u6210\u529f\u540e,\u8df3\u8f6c\u56de\u4e3b\u9875.<\/span><\/h3>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u65b0\u5efa\u9879\u76ee<span spellcheck=\"false\"><code>day13<\/code><\/span>,\u65b0\u589e\u5e94\u7528<span class=\"\" spellcheck=\"false\"><code>douban<\/code><\/span><span class=\"\">\u9879\u76ee\u7684\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b<\/span><\/h5>\n<\/blockquote>\n<p class=\"\"><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\/namec3.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\/namec3.png\" \/><\/span><\/span><\/p>\n<h4 class=\"md-end-block md-heading\"><span class=\"\">0.\u914d\u7f6e\u6587\u4ef6settings.py<\/span><\/h4>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u5de5\u6b32\u5584\u5176\u4e8b,\u5fc5\u5148\u5229\u5176\u5668<\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-comment\">#day13\/settings.py<\/span>\r\n<span class=\"cm-variable\">ALLOWED_HOSTS<\/span> = [<span class=\"cm-string\">'*'<\/span>] <span class=\"cm-comment\">#\u5141\u8bb8\u6240\u6709\u4e3b\u673a\u8bbf\u95ee<\/span>\r\n<span class=\"cm-variable\">INSTALLED_APPS<\/span> = [\r\n \u00a0  <span class=\"cm-string\">'django.contrib.admin'<\/span>,\r\n \u00a0  <span class=\"cm-string\">'django.contrib.auth'<\/span>,\r\n \u00a0  <span class=\"cm-string\">'django.contrib.contenttypes'<\/span>,\r\n \u00a0  <span class=\"cm-string\">'django.contrib.sessions'<\/span>,\r\n \u00a0  <span class=\"cm-string\">'django.contrib.messages'<\/span>,\r\n \u00a0  <span class=\"cm-string\">'django.contrib.staticfiles'<\/span>,\r\n \u00a0  <span class=\"cm-string\">'douban'<\/span>, <span class=\"cm-comment\">#\u6dfb\u52a0app\u5230\u5df2\u5b89\u88c5\u5e94\u7528<\/span>\r\n]<\/pre>\n<h4 class=\"md-end-block md-heading\">1.\u6a21\u578bmodels.py<\/h4>\n<blockquote>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u6839\u636eMVC\u67b6\u6784,\u7b2c\u4e00\u6b65\u662f\u8bbe\u8ba1\u6570\u636e\u5e93\u7684\u6a21\u578b,\u8bbe\u8ba1<\/span><span spellcheck=\"false\"><code>UserModel<\/code><\/span>,\u5305\u542b2\u4e2a\u5b57\u6bb5<span spellcheck=\"false\"><code>username<\/code><\/span>,<span spellcheck=\"false\"><code>password<\/code><\/span><span class=\"\">\u7528\u6765\u5b58\u653e\u767b\u9646\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801.<\/span><\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-comment\">#day13\/douban\/models.py<\/span>\r\n<span class=\"cm-comment\"># -*- coding: utf-8 -*-<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">__future__<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">unicode_literals<\/span>\r\n\u200b\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">db<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">models<\/span>\r\n\u200b\r\n<span class=\"cm-comment\"># Create your models here.<\/span>\r\n<span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">UserModel<\/span>(<span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">Model<\/span>):\r\n \u00a0  <span class=\"cm-variable\">username<\/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 \u00a0  <span class=\"cm-variable\">password<\/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\u200b\r\n \u00a0  <span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">__unicode__<\/span>(<span class=\"cm-variable-2\">self<\/span>):\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable-2\">self<\/span>.<span class=\"cm-property\">username<\/span><\/pre>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u56fd\u9645\u60ef\u4f8b,\u6dfb\u52a0\u4e86\u6570\u636e\u5e93\u6a21\u578b,\u7d27\u63a5\u7740\u5c31\u662f\u751f\u6210\u672c\u5730\u6570\u636e\u5e93\u6587\u4ef6\u548c\u8fc1\u79fb\u5230\u6570\u636e\u5e93,\u540c\u65f6\u65b0\u589e\u4e00\u6761\u8bb0\u5f55<span spellcheck=\"false\"><code>xiazai<\/code><\/span>,<span class=\"\" spellcheck=\"false\"><code>111<\/code><\/span><\/h5>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li class=\"\">\n<h4 class=\"md-end-block md-heading\"><span class=\"\" spellcheck=\"false\"><code>python manage.py makemigrations<\/code><\/span><\/h4>\n<\/li>\n<li class=\"\">\n<h4 class=\"md-end-block md-heading\"><span class=\"\" spellcheck=\"false\"><code>python manage.py migrate<\/code><\/span><\/h4>\n<\/li>\n<\/ul>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-variable\">G<\/span>:<span class=\"cm-error\">\\<\/span><span class=\"cm-variable\">git<\/span><span class=\"cm-error\">\\<\/span><span class=\"cm-variable\">web<\/span><span class=\"cm-error\">\\<\/span><span class=\"cm-variable\">day13<\/span><span class=\"cm-operator\">&gt;<\/span><span class=\"cm-variable\">python<\/span> <span class=\"cm-variable\">manage<\/span>.<span class=\"cm-property\">py<\/span> <span class=\"cm-variable\">makemigrations<\/span> <span class=\"cm-comment\">#\u751f\u6210\u672c\u5730\u6570\u636e\u5e93\u6620\u5c04\u6587\u4ef6<\/span>\r\n<span class=\"cm-variable\">Migrations<\/span> <span class=\"cm-keyword\">for<\/span> <span class=\"cm-string\">'douban'<\/span>:\r\n  <span class=\"cm-variable cm-error\">douban<\/span><span class=\"cm-error\">\\<\/span><span class=\"cm-variable\">migrations<\/span><span class=\"cm-error\">\\000<\/span><span class=\"cm-number\">1<\/span><span class=\"cm-variable\">_initial<\/span>.<span class=\"cm-property\">py<\/span>\r\n \u00a0  <span class=\"cm-operator\">-<\/span> <span class=\"cm-variable\">Create<\/span> <span class=\"cm-variable\">model<\/span> <span class=\"cm-variable\">UserModel<\/span>\r\n\u200b\r\n<span class=\"cm-variable\">G<\/span>:<span class=\"cm-error\">\\<\/span><span class=\"cm-variable\">git<\/span><span class=\"cm-error\">\\<\/span><span class=\"cm-variable\">web<\/span><span class=\"cm-error\">\\<\/span><span class=\"cm-variable\">day13<\/span><span class=\"cm-operator\">&gt;<\/span><span class=\"cm-variable\">python<\/span> <span class=\"cm-variable\">manage<\/span>.<span class=\"cm-property\">py<\/span> <span class=\"cm-variable\">migrate<\/span> \u00a0 \u00a0 \u00a0  <span class=\"cm-comment\">#\u8fc1\u79fb\u672c\u5730\u6570\u636e\u5e93\u6620\u5c04\u6587\u4ef6\u5230\u6570\u636e\u5e93<\/span>\r\n<span class=\"cm-variable\">Operations<\/span> <span class=\"cm-variable\">to<\/span> <span class=\"cm-variable\">perform<\/span>:\r\n  <span class=\"cm-variable cm-error\">Apply<\/span> <span class=\"cm-builtin\">all<\/span> <span class=\"cm-variable\">migrations<\/span>: <span class=\"cm-variable\">admin<\/span>, <span class=\"cm-variable\">auth<\/span>, <span class=\"cm-variable\">contenttypes<\/span>, <span class=\"cm-variable\">douban<\/span>, <span class=\"cm-variable\">sessions<\/span>\r\n<span class=\"cm-variable\">Running<\/span> <span class=\"cm-variable\">migrations<\/span>:\r\n  <span class=\"cm-variable cm-error\">Applying<\/span> <span class=\"cm-variable\">contenttypes<\/span><span class=\"cm-number\">.0001<\/span><span class=\"cm-variable\">_initial<\/span>... <span class=\"cm-property\">OK<\/span>\r\n  <span class=\"cm-variable\">Applying<\/span> <span class=\"cm-variable\">auth<\/span><span class=\"cm-number\">.0001<\/span><span class=\"cm-variable\">_initial<\/span>... <span class=\"cm-property\">OK<\/span>\r\n  <span class=\"cm-variable cm-error\">Applying<\/span> <span class=\"cm-variable\">admin<\/span><span class=\"cm-number\">.0001<\/span><span class=\"cm-variable\">_initial<\/span>... <span class=\"cm-property\">OK<\/span>\r\n  <span class=\"cm-variable\">Applying<\/span> <span class=\"cm-variable\">admin<\/span><span class=\"cm-number\">.0002<\/span><span class=\"cm-variable\">_logentry_remove_auto_add<\/span>... <span class=\"cm-property\">OK<\/span>\r\n  <span class=\"cm-variable cm-error\">Applying<\/span> <span class=\"cm-variable\">contenttypes<\/span><span class=\"cm-number\">.0002<\/span><span class=\"cm-variable\">_remove_content_type_name<\/span>... <span class=\"cm-property\">OK<\/span>\r\n  <span class=\"cm-variable\">Applying<\/span> <span class=\"cm-variable\">auth<\/span><span class=\"cm-number\">.0002<\/span><span class=\"cm-variable\">_alter_permission_name_max_length<\/span>... <span class=\"cm-property\">OK<\/span>\r\n  <span class=\"cm-variable cm-error\">Applying<\/span> <span class=\"cm-variable\">auth<\/span><span class=\"cm-number\">.0003<\/span><span class=\"cm-variable\">_alter_user_email_max_length<\/span>... <span class=\"cm-property\">OK<\/span>\r\n  <span class=\"cm-variable\">Applying<\/span> <span class=\"cm-variable\">auth<\/span><span class=\"cm-number\">.0004<\/span><span class=\"cm-variable\">_alter_user_username_opts<\/span>... <span class=\"cm-property\">OK<\/span>\r\n  <span class=\"cm-variable cm-error\">Applying<\/span> <span class=\"cm-variable\">auth<\/span><span class=\"cm-number\">.0005<\/span><span class=\"cm-variable\">_alter_user_last_login_null<\/span>... <span class=\"cm-property\">OK<\/span>\r\n  <span class=\"cm-variable\">Applying<\/span> <span class=\"cm-variable\">auth<\/span><span class=\"cm-number\">.0006<\/span><span class=\"cm-variable\">_require_contenttypes_0002<\/span>... <span class=\"cm-property\">OK<\/span>\r\n  <span class=\"cm-variable cm-error\">Applying<\/span> <span class=\"cm-variable\">auth<\/span><span class=\"cm-number\">.0007<\/span><span class=\"cm-variable\">_alter_validators_add_error_messages<\/span>... <span class=\"cm-property\">OK<\/span>\r\n  <span class=\"cm-variable\">Applying<\/span> <span class=\"cm-variable\">auth<\/span><span class=\"cm-number\">.0008<\/span><span class=\"cm-variable\">_alter_user_username_max_length<\/span>... <span class=\"cm-property\">OK<\/span>\r\n  <span class=\"cm-variable cm-error\">Applying<\/span> <span class=\"cm-variable\">douban<\/span><span class=\"cm-number\">.0001<\/span><span class=\"cm-variable\">_initial<\/span>... <span class=\"cm-property\">OK<\/span>\r\n  <span class=\"cm-variable\">Applying<\/span> <span class=\"cm-variable\">sessions<\/span><span class=\"cm-number\">.0001<\/span><span class=\"cm-variable\">_initial<\/span>... <span class=\"cm-property\">OK<\/span>\r\n\u200b\r\n<span class=\"cm-variable\">G<\/span>:<span class=\"cm-error\">\\<\/span><span class=\"cm-variable\">git<\/span><span class=\"cm-error\">\\<\/span><span class=\"cm-variable\">web<\/span><span class=\"cm-error\">\\<\/span><span class=\"cm-variable\">day13<\/span><span class=\"cm-operator\">&gt;<\/span><span class=\"cm-variable\">python<\/span> <span class=\"cm-variable\">manage<\/span>.<span class=\"cm-property\">py<\/span> <span class=\"cm-variable\">shell<\/span> <span class=\"cm-comment\">#\u8fdb\u5165python shell \u6a21\u5f0f<\/span>\r\n<span class=\"cm-variable\">Python<\/span> <span class=\"cm-number\">2.7.13<\/span> (<span class=\"cm-variable\">v2<\/span><span class=\"cm-number\">.7.13<\/span>:<span class=\"cm-variable\">a06454b1afa1<\/span>, <span class=\"cm-variable\">Dec<\/span> <span class=\"cm-number\">17<\/span> <span class=\"cm-number\">2016<\/span>, <span class=\"cm-number\">20<\/span>:<span class=\"cm-number\">42<\/span>:<span class=\"cm-number\">59<\/span>) [<span class=\"cm-variable\">MSC<\/span> <span class=\"cm-variable\">v<\/span><span class=\"cm-number\">.1500<\/span> <span class=\"cm-number\">32<\/span> <span class=\"cm-variable\">bit<\/span> (<span class=\"cm-variable\">Intel<\/span>)] <span class=\"cm-variable\">on<\/span> <span class=\"cm-variable\">win32<\/span>\r\n<span class=\"cm-variable\">Type<\/span> <span class=\"cm-string\">\"help\"<\/span>, <span class=\"cm-string\">\"copyright\"<\/span>, <span class=\"cm-string\">\"credits\"<\/span> <span class=\"cm-keyword\">or<\/span> <span class=\"cm-string\">\"license\"<\/span> <span class=\"cm-keyword\">for<\/span> <span class=\"cm-variable\">more<\/span> <span class=\"cm-variable\">information<\/span>.\r\n(<span class=\"cm-variable\">InteractiveConsole<\/span>)\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">douban<\/span>.<span class=\"cm-property\">models<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">UserModel<\/span>  <span class=\"cm-comment\">#\u5bfc\u5165\u521a\u624d\u751f\u6210\u7684\u6a21\u578bUserModel<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">p<\/span>=<span class=\"cm-variable\">UserModel<\/span>(<span class=\"cm-variable\">username<\/span>=<span class=\"cm-string\">'xiazai'<\/span>,<span class=\"cm-variable\">password<\/span>=<span class=\"cm-string\">'111'<\/span>)  <span class=\"cm-comment\">#\u589e\u52a0\u4e00\u6761\u8bb0\u5f55username='xiazai',password='111'<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">p<\/span>.<span class=\"cm-property\">save<\/span>()                                    <span class=\"cm-comment\">#\u5c06\u8bb0\u5f55\u5165\u5e93<\/span><\/pre>\n<h4 class=\"md-end-block md-heading\"><span class=\"\">2.\u89c6\u56fe\u51fd\u6570views.py<\/span><\/h4>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u89c6\u56fe\u51fd\u6570\u5b9a\u4e49\u4e862\u4e2a\u51fd\u6570,\u4e00\u4e2a\u662f\u4e3b\u9875<span spellcheck=\"false\"><code>index<\/code><\/span>,\u53e6\u4e00\u4e2a\u662f\u767b\u9646<span class=\"\" spellcheck=\"false\"><code>login<\/code><\/span><\/h5>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li>\n<h5 class=\"md-end-block md-heading\">\u5982\u679c\u662f\u901a\u8fc7\u8868\u5355\u63d0\u4ea4\u7684post\u8bf7\u6c42,\u5219\u9996\u5148\u7b2c\u4e00\u6b65,\u662f\u8981\u83b7\u53d6\u7528\u6237\u8f93\u5165\u7684\u7528\u6237\u540d<span spellcheck=\"false\"><code>username<\/code><\/span>,\u5bc6\u7801<span spellcheck=\"false\"><code>password<\/code><\/span>,\u67e5\u8be2\u6570\u636e\u5e93\u4e2d\u662f\u5426\u6709\u8bb0\u5f55,\u5982\u679c\u6ca1\u6709,\u8fd4\u56de\u7528\u6237\u540d\u548c\u5bc6\u7801\u9519\u8bef.\u5982\u679c<span spellcheck=\"false\"><code>\u6709<\/code><\/span><\/h5>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li>\n<h5 class=\"md-end-block md-heading\">\u83b7\u53d6\u91cd\u5b9a\u5411\u5230\u4e3b\u9875\u7684\u54cd\u5e94<span spellcheck=\"false\"><code>response=HttpResponseRedirect(reverse('index_page'))<\/code><\/span><\/h5>\n<\/li>\n<li>\n<h5 class=\"md-end-block md-heading\">\u7528\u5185\u7f6e\u6a21\u5757uuid\u521b\u5efa\u4e00\u4e2a\u5168\u7403\u552f\u4e00\u7684<span spellcheck=\"false\"><code>mysessionid=str(uuid.uuid4())<\/code><\/span><\/h5>\n<\/li>\n<li>\n<h5 class=\"md-end-block md-heading\">\u8bbe\u7f6e\u5ba2\u6237\u7aef\u7684cookies,<span spellcheck=\"false\"><code>response.set_cookie('mysessionid',mysessionid)<\/code><\/span><\/h5>\n<\/li>\n<li>\n<h5 class=\"md-end-block md-heading\">\u5c06\u6570\u636e\u5e93\u83b7\u53d6\u5230\u7684\u7528\u6237\u540d\u548csessionid\u7ed1\u5b9a,<span spellcheck=\"false\"><code>request.session[mysessionid]=userModel.username<\/code><\/span><\/h5>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<h5 class=\"md-end-block md-heading\">\u8bbf\u95ee\u4e3b\u9875\u65f6<\/h5>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u9996\u5148\u8981\u4ece\u8bf7\u6c42\u7684cookies\u4e2d\u5f97\u5230mysessionid\u7684\u503c<\/span><span spellcheck=\"false\"><code>mysessionid=request.COOKIES.get('mysessionid')<\/code><\/span><\/h5>\n<\/li>\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\">\u5c06\u8fd9\u4e2asessionid\u5728requst\u7684\u4f1a\u8bdd\u91cc\u9762\u67e5\u627e,\u5f97\u5230\u5bf9\u5e94\u7684\u7528\u6237\u540d.<span class=\"\" spellcheck=\"false\"><code>username=request.session.get(mysessionid)<\/code><\/span><\/h5>\n<\/li>\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u5982\u679c\u7528\u6237\u540dusername\u5b58\u5728,\u5219\u8ba4\u4e3a\u5df2\u7ecf\u767b\u9646,\u91cd\u5b9a\u5411\u5230\u4e3b\u9875,\u5426\u5219,\u91cd\u5b9a\u5411\u5230\u767b\u9646\u754c\u9762.<\/span><\/h5>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/blockquote>\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\">__future__<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">unicode_literals<\/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>,<span class=\"cm-variable\">HttpResponse<\/span>,<span class=\"cm-variable\">HttpResponseRedirect<\/span>,<span class=\"cm-variable\">reverse<\/span> <span class=\"cm-comment\">#\u9700\u7528\u5230HttpResponse,HttpResponseRedirect,reverse\u6a21\u5757<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">models<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">UserModel<\/span> <span class=\"cm-comment\">#\u5bfc\u5165\u6570\u636e\u5e93\u6a21\u578b<\/span>\r\n<span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">uuid<\/span>                 <span class=\"cm-comment\">#\u5bfc\u5165uuid<\/span>\r\n<span class=\"cm-comment\"># Create your views here.<\/span>\r\n<span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">index<\/span>(<span class=\"cm-variable\">request<\/span>):\r\n \u00a0  <span class=\"cm-variable\">mysessionid<\/span>=<span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">COOKIES<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-string\">'mysessionid'<\/span>) <span class=\"cm-comment\">#\u4ece\u670d\u52a1\u5668\u4f20\u56de\u6765\u7684cookies\u4e2d\u8bf7\u6c42mysessionid<\/span>\r\n \u00a0  <span class=\"cm-variable\">username<\/span>=<span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">session<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-variable\">mysessionid<\/span>) \u00a0  <span class=\"cm-comment\">#\u4ece\u8bf7\u6c42\u7684request\u4e2d\u901a\u8fc7mysessionid\u67e5\u627e\u7528\u6237\u540d<\/span>\r\n \u00a0  <span class=\"cm-keyword\">if<\/span> <span class=\"cm-variable\">username<\/span>: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0    <span class=\"cm-comment\">#\u5982\u679c\u7528\u6237\u540dusername\u5b58\u5728,\u5219\u8ba4\u4e3a\u5df2\u7ecf\u767b\u9646,\u91cd\u5b9a\u5411\u5230\u4e3b\u9875,\u5426\u5219,\u91cd\u5b9a\u5411\u5230\u767b\u9646\u754c\u9762.<\/span>\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">HttpResponse<\/span>(<span class=\"cm-string\">\"\u6b22\u8fce\u6765\u5230%s\u7684\u535a\u5ba2!\"<\/span><span class=\"cm-operator\">%<\/span><span class=\"cm-variable\">username<\/span>)\r\n \u00a0  <span class=\"cm-keyword\">else<\/span>:\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">HttpResponseRedirect<\/span>(<span class=\"cm-variable\">reverse<\/span>(<span class=\"cm-string\">'login_page'<\/span>))\r\n\u200b\r\n<span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">login<\/span>(<span class=\"cm-variable\">request<\/span>):\r\n \u00a0  <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 \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">render<\/span>(<span class=\"cm-variable\">request<\/span>,<span class=\"cm-string\">'login.html'<\/span>)\r\n \u00a0  <span class=\"cm-keyword\">else<\/span>:\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-variable\">username<\/span>=<span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">POST<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-string\">'username'<\/span>,<span class=\"cm-builtin\">None<\/span>)  <span class=\"cm-comment\">#\u53d6\u51fa\u8868\u5355\u8f93\u5165\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801<\/span>\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-variable\">password<\/span>=<span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">POST<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-string\">'password'<\/span>,<span class=\"cm-builtin\">None<\/span>)\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-variable\">userModel<\/span>=<span class=\"cm-variable\">UserModel<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">filter<\/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-property\">first<\/span>() <span class=\"cm-comment\">#\u901a\u8fc7\u6570\u636e\u5e93\u6765\u9a8c\u8bc1\u7528\u6237\u540d\u548c\u5bc6\u7801<\/span>\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">if<\/span> <span class=\"cm-variable\">userModel<\/span>:                                                                   <span class=\"cm-comment\">#\u5982\u679cuserModel\u4e0d\u4e3aNone<\/span>\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  <span class=\"cm-variable\">response<\/span>=<span class=\"cm-variable\">HttpResponseRedirect<\/span>(<span class=\"cm-variable\">reverse<\/span>(<span class=\"cm-string\">'index_page'<\/span>))                        <span class=\"cm-comment\">#\u8d4b\u503c\u8fd4\u56de\u7684\u5bf9\u8c61\u7ed9response<\/span>\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  <span class=\"cm-variable\">mysessionid<\/span>=<span class=\"cm-builtin\">str<\/span>(<span class=\"cm-variable\">uuid<\/span>.<span class=\"cm-property\">uuid4<\/span>())                                               <span class=\"cm-comment\">#\u7528uuid\u751f\u6210mysessionid<\/span>\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  <span class=\"cm-variable\">response<\/span>.<span class=\"cm-property\">set_cookie<\/span>(<span class=\"cm-string\">'mysessionid'<\/span>,<span class=\"cm-variable\">mysessionid<\/span>)                              <span class=\"cm-comment\">#\u8bbe\u7f6ecookie,\u4f20\u7ed9\u5ba2\u6237\u7aef<\/span>\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  <span class=\"cm-variable\">request<\/span>.<span class=\"cm-property\">session<\/span>[<span class=\"cm-variable\">mysessionid<\/span>]=<span class=\"cm-variable\">userModel<\/span>.<span class=\"cm-property\">username<\/span> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0                 <span class=\"cm-comment\">#\u5c06mysessionid\u7684\u952e\u503c\u5bf9\u5c01\u88c5\u5230requst.session\u5b57\u5178\u91cc.<\/span>\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">response<\/span>\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">else<\/span>:\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">HttpResponse<\/span>(<span class=\"cm-string\">\"\u7528\u6237\u540d\u548c\u5bc6\u7801\u9519\u8bef\"<\/span>)<\/pre>\n<h4 class=\"md-end-block md-heading\">3.html\u6a21\u677f\u6587\u4ef6<span spellcheck=\"false\"><code>login.html<\/code><\/span><\/h4>\n<blockquote>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u6539\u9875\u9762\u53ea\u8bbe\u8ba1\u767b\u9646\u8868\u5355,\u56e0\u4e3adjango\u9ed8\u8ba4\u5f00\u4e86csrf_token\u8de8\u57df\u653b\u51fb\u9a8c\u8bc1\u7684\u4e2d\u95f4\u4ef6,\u6240\u4ee5\u6a21\u677f\u6587\u4ef6\u5fc5\u987b\u52a0<\/span><span class=\"\" spellcheck=\"false\"><code>{% csrf_token %}<\/code><\/span><\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"html\" contenteditable=\"false\">#day13\/setting.py\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 \u00a0  <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 \u00a0  <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">title<\/span><span class=\"cm-tag cm-bracket\">&gt;<\/span>\u767b\u5f55\u9875\u9762<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\">center<\/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  {% csrf_token %}\r\n \u00a0  \u7528\u6237\u540d:<span class=\"cm-tag cm-bracket\">&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\">\"username\"<\/span> <span class=\"cm-attribute\">placeholder<\/span>=<span class=\"cm-string\">\"\u8bf7\u8f93\u5165\u7528\u6237\u540d\"<\/span><span class=\"cm-tag cm-bracket\">\/&gt;&lt;\/<\/span><span class=\"cm-tag cm-error\">br<\/span><span class=\"cm-tag cm-bracket cm-error\">&gt;<\/span>\r\n \u00a0  \u5bc6\u7801:  <span class=\"cm-tag cm-bracket\">&lt;<\/span><span class=\"cm-tag\">input<\/span> <span class=\"cm-attribute\">type<\/span>=<span class=\"cm-string\">\"password\"<\/span> <span class=\"cm-attribute\">name<\/span>=<span class=\"cm-string\">\"password\"<\/span> <span class=\"cm-attribute\">placeholder<\/span>=<span class=\"cm-string\">\"\u8bf7\u8f93\u5165\u5bc6\u7801\"<\/span><span class=\"cm-tag cm-bracket\">\/&gt;&lt;\/<\/span><span class=\"cm-tag cm-error\">br<\/span><span class=\"cm-tag cm-bracket cm-error\">&gt;<\/span>\r\n \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\">\"submit\"<\/span> <span class=\"cm-attribute\">value<\/span>=<span class=\"cm-string\">\"\u63d0\u4ea4\"<\/span><span class=\"cm-tag cm-bracket\">\/&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag cm-error\">form<\/span><span class=\"cm-tag cm-bracket cm-error\">&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag cm-error\">center<\/span><span class=\"cm-tag cm-bracket cm-error\">&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag cm-error\">body<\/span><span class=\"cm-tag cm-bracket cm-error\">&gt;<\/span>\r\n<span class=\"cm-tag cm-bracket\">&lt;\/<\/span><span class=\"cm-tag cm-error\">html<\/span><span class=\"cm-tag cm-bracket cm-error\">&gt;<\/span><\/pre>\n<h4 class=\"md-end-block md-heading\">4.\u8def\u7531\u51fd\u6570<\/h4>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u8fd9\u4e00\u6b65\u4e3b\u8981\u662f\u589e\u52a02\u4e2a\u8def\u7531,\u5e76\u8d77\u522b\u540d<\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-comment\">#day13\/day13.urls.py<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">conf<\/span>.<span class=\"cm-property\">urls<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">url<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">contrib<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">admin<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">douban<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">views<\/span>\r\n<span class=\"cm-variable\">urlpatterns<\/span> = [\r\n \u00a0  <span class=\"cm-variable\">url<\/span>(<span class=\"cm-string\">r'^admin\/'<\/span>, <span class=\"cm-variable\">admin<\/span>.<span class=\"cm-property\">site<\/span>.<span class=\"cm-property\">urls<\/span>),\r\n \u00a0  <span class=\"cm-variable\">url<\/span>(<span class=\"cm-string\">r'^$'<\/span>,<span class=\"cm-variable\">views<\/span>.<span class=\"cm-property\">index<\/span>,<span class=\"cm-variable\">name<\/span>=<span class=\"cm-string\">'index_page'<\/span>), <span class=\"cm-comment\">#\u589e\u52a0\u4e3b\u9875\u7684\u8def\u7531<\/span>\r\n \u00a0  <span class=\"cm-variable\">url<\/span>(<span class=\"cm-string\">r'^login\/$'<\/span>,<span class=\"cm-variable\">views<\/span>.<span class=\"cm-property\">login<\/span>,<span class=\"cm-variable\">name<\/span>=<span class=\"cm-string\">'login_page'<\/span>), <span class=\"cm-comment\">#\u589e\u963f\u9886\u8def\u7684\u843d,\u8d77\u60b2\u9e23\u4e3alogin_page<\/span>\r\n]<\/pre>\n<h4 class=\"md-end-block md-heading\">5.\u542f\u52a8\u9879\u76ee\u5e76\u8c03\u8bd5<\/h4>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u8bbf\u95ee\u4e3b\u9875<span spellcheck=\"false\"><a href=\"http:\/\/127.0.0.1:9008\/\">http:\/\/127.0.0.1:9008\/<\/a><\/span>,\u7531\u4e8e\u6ca1\u767b\u9646,\u6240\u4ee5\u88ab\u91cd\u5b9a\u5411\u5230\u767b\u9646\u9875\u9762<span spellcheck=\"false\"><code>http:\/\/127.0.0.1:9008\/login\/<\/code><\/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\/namec4.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\/namec4.png\" \/><\/span><\/span><\/p>\n<blockquote>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u5982\u679c\u767b\u9646\u4e0d\u5b58\u5728\u7684\u7528\u6237\u540d,\u6216\u8005\u9519\u8bef\u7684\u540d\u7528\u6237,\u5219\u4f1a\u63d0\u793a\u7528\u6237\u540d\u548c\u5bc6\u7801\u9519\u8bef\u62a5\u9519\u4e86.<\/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\/namec5.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\/namec5.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\/namec6.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\/namec6.png\" \/><\/span><\/span><\/p>\n<blockquote>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u5982\u679c\u8f93\u5165\u6b63\u786e\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801,\u5c31\u4f1a\u91cd\u5b9a\u5411\u5230\u535a\u5ba2\u4e3b\u9875!\u518d\u6b21\u6253\u5f00,\u7531\u4e8e\u7f13\u5b58\u4e86cookie,\u4f9d\u7136\u662f\u8def\u7531\u5230\u5230\u535a\u5ba2\u4e3b\u9875,\u5b9e\u9a8c\u6210\u529f.<\/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\/namec7.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\/namec7.png\" \/><\/span><\/span><\/p>\n<h2 class=\"md-end-block md-heading\"><span class=\"\">\u603b\u7ed3<\/span><\/h2>\n<h5 class=\"md-end-block md-heading\">cookie\u548csession\u5bf9\u4e8e\u521d\u5b66\u8005\u6bd4\u8f83\u96be\u7406\u89e3.\u8fd9\u91cc\u901a\u8fc7\u7b80\u5355\u7684\u56fe\u4f8b,\u5206\u6790\u4e86cookies\u548csession\u7684\u539f\u7406,\u5e76\u5f00\u53d1\u4e86\u4e00\u4e2a\u767b\u9646\u540e\u53ef\u8bbf\u95ee\u4e3b\u9875\u7684\u9879\u76ee.\u5bf9\u52a0\u6df1\u7406\u89e3request.COOKIES\u7684\u5b57\u5178\u5bf9\u8c61,request.session\u5bf9\u8c61,\u4ee5\u53caresponse.set_cookie\u65b9\u6cd5\u6709\u4e86\u66f4\u6df1\u5165\u7684\u4e86\u89e3.\u5176\u4e2d<span spellcheck=\"false\"><code>response.set_cookie<\/code><\/span>\u662f\u670d\u52a1\u5668\u8bbe\u7f6e\u5e76\u4f20\u7ed9\u5ba2\u6237\u7aef\u7684mysessionid,<span spellcheck=\"false\"><code>request.session<\/code><\/span><span class=\"\">\u662f\u8bbe\u7f6esessionid\u7ed9\u670d\u52a1\u5668.<\/span><span spellcheck=\"false\"><code>request.COOKIES<\/code><\/span><span class=\"\">\u662f\u53d6\u51facookies\u4e2d\u7684sessionid\u503c,\u8fdb\u4e00\u6b65\u548c\u670d\u52a1\u5668\u7684request.session\u5339\u914d,\u5f97\u5230\u7528\u6237\u540dusername.\u672c\u8282\u8bfe\u5fc5\u987b\u91cd\u70b9\u638c\u63e1.<\/span><\/h5>\n","protected":false},"excerpt":{"rendered":"<p>1.cookie\u7684\u539f\u7406 \u5ba2\u6237\u7aef\u767b\u9646\u5230\u670d\u52a1\u5668\u540e,\u670d\u52a1\u5668\u4f1a\u521b\u5efa\u4e00\u4e2acookie,\u91cc\u9762\u8bb0\u8f7d\u7740\u767b\u9646\u7684\u7528\u6237\u540d,\u5bc6\u7801\u7b49\u4fe1\u606f,\u4f20\u7ed9\u5ba2\u6237\u7aef\u4fdd\u5b58\u5230\u672c\u5730,\u5ba2\u6237\u7aef\u4e0b\u6b21\u548c\u670d\u52a1\u5668\u7684\u901a\u4fe1,\u5c31\u4f1a\u643a\u5e26\u7740\u8fd9\u4e2a\u8bb0\u5f55\u4e86\u7528\u6237\u540d\u548c\u5bc6\u7801\u4fe1\u606f\u7684cookie,\u53bb\u8bbf\u95ee\u670d\u52a1\u5668,\u670d\u52a1\u5668\u5c31\u4f1a\u8bc6\u522b [&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\/1375"}],"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=1375"}],"version-history":[{"count":4,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=\/wp\/v2\/posts\/1375\/revisions"}],"predecessor-version":[{"id":1432,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=\/wp\/v2\/posts\/1375\/revisions\/1432"}],"wp:attachment":[{"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1375"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1375"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}