综合二区_欧美成人综合_欧美成人二区_a黄视频_亚洲视频在线播放_一区二区三区视频免费看

µ±Ç°Î»ÖãºÊ×Ò³ > ÍøÕ¾¾ÉÀ¸Ä¿ > ѧϰ԰µØ > Éè¼ÆÈí¼þ½Ì³Ì > ·­Òëwww.djangobook.comÖ®µÚÊ®¶þÕ£º»á»°£¬Óû§ºÍ×¢²á

·­Òëwww.djangobook.comÖ®µÚÊ®¶þÕ£º»á»°£¬Óû§ºÍ×¢²á
2010-01-13 23:41:25  ×÷Õß:  À´Ô´:
ÊÇʱºò³ÐÈÏÁË:ÎÒÃǹÊÒâºöÂÔÁËÒ»¸öweb¿ª·¢¼«¶ËÖØÒªµÄ·½Ã棬µ½Ä¿Ç°ÎªÖ¹£¬ÎÒÃÇ¿¼ÂÇÁË´óÁ¿Î´Â¶ÃæµÄÄäÃûÓû§·ÃÎÊÎÒÃÇ
Õ¾µãÒ³ÃæµÄÁ÷Á¿Çé¿ö£¬Õ⵱Ȼ²»ÕýÈ·£¬·ÃÎÊÎÒÃÇÕ¾µãµÄä¯ÀÀÆ÷ºóÃæÊÇÕæÊµµÄÈË(ÖÁÉÙÓÐЩʱºòÊÇÕâÑù)£¬ÕâÊDZ»ºöÂÔµÄÒ»¸ö
´óÎÊÌâ:µ±Internet·þÎñÓÚÈ˶ø²»ÊÇ»úÆ÷ʱÊǹ¤×÷µÄ×îºÃµÄ£¬Èç¹ûÎÒÃÇ¿ª·¢ÕæÕýÒýÈËעĿµÄÕ¾µãʱ£¬×îÖÕÎÒÃǽ«²»µÃ²»Óë
ä¯ÀÀÆ÷ºóÃæµÄÈË´ò½»µÀ
²»ÐÒµÄÊÇ£¬Õâ²¢²»ÈÝÒ×£¬HTTP±»Éè¼ÆÎªÎÞ״̬£¬¼´Ã¿¸öÇëÇó·¢ÉúÔÚÒ»¸ö¿Õ¼äÀÁ½¸öÇëÇóÖ®¼äûÓг־û¯£¬²¢ÇÒÎÒÃDz»ÄÜ
¼ÆËãÒ»¸öÇëÇóµÄÿ¸ö·½Ãæ(IPµØÖ·£¬Óû§´úÀíµÈµÈ)À´Ò»ÖµÄÏÔʾͬһ¸öÈ˵ÄÁ¬ÐøÇëÇó
ä¯ÀÀÆ÷¿ª·¢ÈËÔ±ºÜ¾Ã֮ǰ¾ÍÒâʶµ½HTTPµÄÎÞ״̬µ¼ÖÂÁËweb¿ª·¢ÈËÔ±ºÜ´óµÄÂé·³£¬¾ÍÕâÑùcookiesµ®ÉúÁË
cookieÊÇÒ»¸öСÐÅϢƬ¶Î£¬ä¯ÀÀÆ÷´æ´¢ËüÀ´´ú±íweb·þÎñÆ÷£¬Ã¿´Îä¯ÀÀÆ÷´Óijһ·þÎñÆ÷ÇëÇóÒ»¸öÒ³ÃæÊ±¶¼»á°ÑËüÆð³õ½ÓÊÜ
µÄcookie»Ø´«¹ýÈ¥

Cookies
ÈÃÎÒÃÇ¿´¿´Ëü¿ÉÄÜÔõÑù¹¤×÷£¬µ±Ä㿪Æôä¯ÀÀÆ÷²¢¼üÈëgoogle.com£¬ÄãµÄä¯ÀÀÆ÷ÏñÕâÑù¿ªÊ¼À´·¢ËÍÒ»¸öHTTPÇëÇóµ½Google:
GET / HTTP/1.1
Host: google.com
...
µ±Google»Ø¸´Ê±£¬HTTPÓ¦´ð¿´ÆðÀ´ÏñÕâÑù:
HTTP/1.1 200 OK
Content-Type: text/html
Set-Cookie: PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671;
            expires=Sun, 17-Jan-2038 19:14:07 GMT;
            path=/; domain=.google.com
Server: GWS/2.1
×¢ÒâSet-CookieÍ·²¿£¬ÄãµÄä¯ÀÀÆ÷½«´æ´¢Õâ¸öcookieÖµ(PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671)²¢ÔÚ
ÿ´ÎÄã·ÃÎÊÕâ¸öÕ¾µãʱ»Ø´«¸øGoogle£¬ËùÒÔÏÂÒ»´ÎÄã·ÃÎÊGoogleʱÄãµÄä¯ÀÀÆ÷½«´«µÝÏñÕâÑùµÄÇëÇó:
GET / HTTP/1.1
Host: google.com
Cookie: PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671
...
È»ºóGoogle¿ÉÒÔʹÓÃÕâ¸öCookieÖµÀ´ÖªµÀÄãÊÇÔçЩʱºò·ÃÎÊÕâ¸öÕ¾µãµÄͬһ¸öÈË
ÀýÈ磬Õâ¸öÖµ¿ÉÄÜÊÇÊý¾Ý¿â´æ´¢Óû§ÐÅÏ¢µÄ¼ü£¬Google¿ÉÒÔ(Ҳȷʵ)ʹÓÃËüÀ´ÔÚÒ³ÃæÉÏÏÔʾÄãµÄÃû×Ö

µÃµ½ºÍÉèÖÃcookies
µ±ÔÚDjangoÖд¦Àí³Ö¾Ã»¯Ê±£¬´ó²¿·ÖʱºòÄãÏëʹÓÃÉÔºóÌÖÂ۵ĸ߼¶sessionºÍ/»òÓû§¿ò¼Ü£¬¾¡¹ÜÈç´Ë£¬ÎÒÃǽ«Í£ÏÂÀ´ÏÈ
¿´¿´ÔÚDjangoÖÐÔõÑù¶ÁºÍдcookies£¬Ëü½«°ïÖúÄãÀí½â±¾ÕÂÆäËü²¿·ÖÊÂʵÉÏÔõÑù¹¤×÷£¬²¢ÇÒÈç¹ûÄãÐèÒªÖ±½Ó²Ù×÷cookies
µÄ»°Ëü½«´¥ÊֿɵÃ
¶ÁÈ¡ÒѾ­ÉèÖõÄcookiesÊǷdz£¼òµ¥µÄ:ÿ¸örequest¶ÔÏó¶¼ÓÐÒ»¸öÀàËÆ×ÖµäµÄCOOKIES¶ÔÏó£¬Äã¿ÉÒÔʹÓÃËüÀ´¶Áä¯ÀÀÆ÷·¢ËÍ
µ½ÊÓͼµÄÈκÎcookies:
Java´úÂë ¸´ÖÆ´úÂë
  1. def show_color(request):   
  2.     if "favorite_color" in request.COOKIES:   
  3.         return HttpResponse("Your favorite color is %s" % \   
  4.             request.COOKIES["favorite_color"])   
  5.     else:   
  6.         return HttpResponse("You don't have a favorite color.")  

дcookies¸ü¸´ÔÓÒ»µã£¬ÄãÐèҪʹÓÃHttpResponse¶ÔÏóµÄset_cookie()·½·¨£¬ÕâÀïÊÇÒ»¸ö»ùÓÚGET²ÎÊýÉèÖÃfavorite_color
cookieµÄÀý×Ó:
Java´úÂë ¸´ÖÆ´úÂë
  1. def set_color(request):   
  2.     if "favorite_color" in request.GET:   
  3.   
  4.         # Create an HttpResponse object...   
  5.         response = HttpResponse("Your favorite color is now %s" % \   
  6.             request.GET["favorite_color"])   
  7.   
  8.         # ... and set a cookie on the response   
  9.         response.set_cookie("favorite_color",   
  10.                             request.GET["favorite_color"])   
  11.   
  12.     else:   
  13.         return HttpResponse("You didn't give a favorite color.")  

ÄãÒ²¿ÉÒÔ´«µÝһЩ¿ÉÑ¡²ÎÊýµ½request.set_cookie()À´¿ØÖÆcookieµÄһЩ·½Ãæ:
Parameter        Default        Description
max_age          None           cookie³ÖÐøµÄʱ¼ä(Ãë)£¬Èç¹ûΪNone£¬cookie½«Ö»³ÖÐøµ½ä¯ÀÀÆ÷¹Ø±Õ
expires          None           cookie¹ýÆÚµÄ׼ȷÈÕÆÚ/ʱ¼ä£¬¸ñʽӦΪ"Wdy, DD-Mth-YY HH:MM:SS GMT"
                                Èç¹û¸ø¶¨Öµ£¬Ëü½«¸²¸Çmax_age²ÎÊý
path             "/"            cookieµÄºÏ·¨µÄ·¾¶Ç°×º£¬ä¯ÀÀÆ÷½«Ö»°Ñcookie´«µÝ»Ø¸Ã·¾¶Ç°×ºÏ£¬ËùÒÔÄã¿ÉÒÔ
                                ʹÓÃËüÀ´·ÀÖ¹cookies±»´«µÝ¸øÄãµÄÕ¾µãµÄÆäËü²¿·Ö£¬µ±Äã²»¿ØÖÆÄãµÄÕ¾µãÓòÃûµÄ
                                ¶¥¼¶²¿·ÖʱÕâ·Ç³£ÓÐÓÃ
domain           None           cookieµÄºÏ·¨ÓòÃû£¬Äã¿ÉÒÔʹÓÃËüÀ´ÉèÖÿçÓòÃûµÄcookie£¬ÀýÈ磬domain=".examp
                                le.com"½«ÉèÖÃÒ»¸ö¿ÉÒÔ±»www.example.com£¬www2.example.comºÍan.other.sub.
                                domain.example.com¶ÁÈ¡µÄcookie
                                Èç¹ûÉèÖÃΪNone£¬cookie½«Ö»Äܱ»ÉèÖÃËüµÄÓòÃû¶ÁÈ¡
secure           False          Èç¹ûÉèÖÃΪTrue£¬Ëü½«Ö¸Ê¾ä¯ÀÀÆ÷Ö»µ±Í¨¹ýHTTPS·ÃÎÊÒ³ÃæÊ±·µ»ØÕâ¸öcookie

cookiesµÄ»ìºÏ×£¸£
Äã¿ÉÄÜ×¢Òâµ½cookies¹¤×÷µÄһЩDZÔÚµÄÎÊÌ⣬ÈÃÎÒÃÇ¿´¿´Ò»Ð©ÖØÒªµÄ:
1£¬Cookies±¾ÖÊÉÏÊÇ×Ô·¢µÄ£¬ä¯ÀÀÆ÷²»±£Ö¤cookiesµÄ´æ´¢£¬ÊÂʵÉÏ£¬Õâ¸öÐÐÐÇÉϵÄÿ¸öä¯ÀÀÆ÷¶¼ÈÃÄã¿ØÖÆÄãµÄä¯ÀÀÆ÷µÄ
½ÓÊÜcookiesµÄ²ßÂÔ£¬Èç¹ûÄãÏë¿´ÖØÒªµÄcookiesÔõÑùµ½´ïweb£¬³¢ÊÔ´ò¿ªä¯ÀÀÆ÷µÄ"½ÓÊÜÿ¸öcookie"Ñ¡ÏÉõÖÁÒ»¸ö¾Þ´ó
µÄÀ¶É«¹ÖÎï¶¼½«Ìî³äËùÓÐÕâЩcookies!
µ±È»£¬ÕâÒâζ×ÅcookiesÉϲ»¿ÉÐÅÈε͍Ò壬¿ª·¢ÈËÔ±Ó¦¸Ã¼ì²éÓû§ÔÚÐÅÀµËüÃÇ֮ǰ½ÓÊÜÁËcookies
¸üÖØÒªµÄÊÇ£¬ÄãÓ¦¸Ã´Ó²»ÔÚcookiesÀïÃæ´æ´¢ÖØÒªÊý¾Ý£¬web³äÂúÁË¿ª·¢ÈËԱΪÁËijЩԭÒòÔÚä¯ÀÀÆ÷cookiesÀï´æ´¢²»¿ÉÖØ
»ñµÄÐÅÏ¢À´Ê¹ä¯ÀÀÆ÷·½±ãµÄ¿Ö²À¹ÊÊÂ
2£¬Cookies²»Êǰ²È«µÄ£¬ÒòΪHTTPÊý¾Ý´«ÊäµÄÊÇÃ÷ÎÄ£¬cookies·Ç³£ÈÝÒ×ÊÜÇÔÌý¹¥»÷£¬¼´¹¥»÷ÕßÔÚÏßÉÏÇÔÌý¿ÉÒÔ½ØÈ¡
cookie²¢¶ÁÈ¡Ëü£¬ÕâÒâζ×ÅÄãÓ¦¸Ã´Ó²»ÔÚcookieÀï´æ´¢Ãô¸ÐÐÅÏ¢
»¹ÓиüÒõÏÕµÄ"ÖмäÈË"¹¥»÷£¬ÆäÖÐÒ»¸ö¹¥»÷Õß½ØÈ¡cookie²¢Ê¹ÓÃËüÀ´¼ÙװΪÁíÒ»¸öÓû§£¬µÚ20ÕÂÉîÈëÌÖÂÛÁËÕâÖÖ¹¥»÷ÏÖÏó
²¢¸ø³öÁËÔ¤·ÀµÄ°ì·¨
3£¬CookiesÉõÖÁ¶ÔÔ¤¶¨µÄ½ÓÊÜÕß¶¼²»°²È«£¬´ó¶àÊýä¯ÀÀÆ÷Ìṩ¼òÒ×·½Ê½À´±à¼­µ¥¶ÀcookiesµÄÄÚÈÝ£¬²¢ÇÒ×ãÖǶàıµÄÓû§
¿ÉÒÔʹÓÃÏñmechanizeµÄ¹¤¾ßÀ´ÊÖ¶¯¹¹½¨HTTPÇëÇó
ËùÒÔÄã²»ÄÜÔÚcookiesÀï´æ´¢¿É´Ü¸ÄµÄÃô¸ÐÊý¾Ý£¬ÕâÖÖÇéÐÎϵıê×¼´íÎóÊǵ±Óû§µÇ¼ºóÔÚcookieÀï´æ´¢ÏñIsLoggedIn=1
µÄ¶«Î÷£¬Äã»á¶Ô´óÁ¿µÄÕ¾µã·¸ÕâÖÖ´íÎó¶ø¸Ðµ½¾ªÆæ£¬Ö»Ð軨һÃëÖӾͿÉÒÔÓÞŪÕâЩվµãµÄ"°²È«"ϵͳ

DjangoµÄsession¿ò¼Ü
ÓÉÓÚÕâЩÏÞÖÆºÍDZÔڵݲȫ©¶´£¬ºÜÏÔÈ»cookiesºÍ³Ö¾Ã»¯sessionsÊÇÁíÒ»¸öweb¿ª·¢ÀïÍ·Ì۵ĵط½£¬µ±È»DjangoµÄÄ¿±êÊÇ
×ö¸ßЧµÄÍ·ÌÛɱÊÖ£¬ËùÒÔDjango´øÀ´Ò»¸öΪÄãɨƽÕâЩÀ§ÄѵÄsession¿ò¼Ü
Õâ¸ösession¿ò¼ÜÈÃÄã»ùÓÚÒ»¸öÕ¾µã·ÃÎÊÕß´æ´¢ºÍµÃµ½ÈÎÒâÊý¾Ý£¬ËüÔÚ·þÎñÆ÷¶Ë´æ´¢Êý¾Ý²¢³éÏó·¢ËͺͽÓÊÜcookies
CookiesֻʹÓÃÒ»¸ö¹þÏ£session ID¶ø²»ÊÇÊý¾Ý±¾Éí£¬ÕâÑù¿ÉÒÔ·ÀÖ¹´ó²¿·Öͨ³£µÄcookieÎÊÌâ

ÔÊÐísessions
Sessionsͨ¹ýÒ»¸öÖмä¼þ(²Î¿¼µÚ16ÕÂ)ºÍÒ»¸öDjangoÄ£ÐÍʵÏÖ£¬ÄãÐèÒª×öÈçÏÂÊÂÇéÀ´ÔÊÐísessions:
1£¬±à¼­ÄãµÄMIDDLEWARE_CLASSESÉèÖò¢È·ÈÏMIDDLEWARE_CLASSES°üº¬'django.contrib.sessions.middleware.Session
Middleware'
2£¬È·ÈÏ'django.contrib.sessions'ÔÚÄãµÄINSTALLED_APPSÉèÖÃÀï(Èç¹ûÄãÐèÒªÌí¼ÓËü»¹ÒªÔÊÐímanage.py syncdb)
ͨ¹ýstartproject´´½¨µÄĬÈϹǼÜÉèÖÃÒѾ­°²×°ÁËÕâÁ½ÏËùÒÔ³ý·ÇÄãÒѾ­É¾³ýÁËËüÃÇ£¬ÄãºÜ¿ÉÄܲ»ÐèÒª¸Ä±äÈκζ«Î÷
¾Í¿ÉÒÔÈÃsessions¹¤×÷
Èç¹ûÄã²»ÏëʹÓÃsessions£¬Äã¿ÉÄÜÏë´ÓMIDDLEWARE_CLASSESɾ³ýSessionMiddlewareÐкʹÓINSTALLED_APPSɾ³ý
'django.contrib.sessions'£¬Ëü½«Ö»±£´æÒ»¸öºÜСµÄ¹ý¶È£¬µ«ÊÇÕâºÜСµÄ²¿·ÖÆð×÷ÓÃ

ÔÚÊÓͼÀïʹÓÃsessions
µ±SessionMiddleware¼¤»îºó£¬Ã¿¸öHttpRequest¶ÔÏó--ÿ¸öDjangoÊÓͼ·½·¨µÄµÚÒ»¸ö²ÎÊý--½«ÓÐÒ»¸ösessionÊôÐÔ£¬ËüÊÇ
Ò»¸öÀàËÆ×ÖµäµÄ¶ÔÏó£¬Äã¿ÉÒÔÏñʹÓÃÆÕͨµÄ×ÖµäÒ»Ñù¶ÁдËü£¬ÀýÈ磬Äã¿ÉÒÔÔÚÊÓͼÖÐ×öÕâÑùµÄÊÂÇé:
Java´úÂë ¸´ÖÆ´úÂë
  1. # Set a session value:   
  2. request.session["fav_color"] = "blue"  
  3.   
  4. # Get a session value -- this could be called in a different view,   
  5. # or many requests later (or both):   
  6. fav_color = request.session["fav_color"]   
  7.   
  8. # Clear an item from the session:   
  9. del request.session["fav_color"]   
  10.   
  11. # Check if the session has a given key:   
  12. if "fav_color" in request.session:   
  13.     ...  

ÄãÒ²¿ÉÒÔÔÚrequest.sessionʹÓÃÏñkeys()ºÍitems()µÄÆäËüÓ³Éä·½·¨
ÓÐһЩ¸ßЧʹÓÃDjangoµÄsessionsµÄ¼òµ¥¹æÔò:
1£¬ÔÚrequest.sessionʹÓÃÆÕͨµÄPython×Ö·û´®×÷Ϊ×ÖµäµÄ¼ü(¶ø²»ÊÇintegers£¬objectsµÈµÈ)£¬ÕâÊÇÒ»¸ö¹ßÀý£¬µ«ÊÇÖµ
µÃ×ñÑ­
2£¬ÒÔÏ»®Ïß¿ªÊ¼µÄsession×Öµä¼ü±»Django±£Áô×÷ÄÚ²¿Ê¹Óã¬Êµ¼ùÖпò¼ÜֻʹÓ÷dz£ÉÙµÄÏ»®Ïßǰ׺µÄsession±äÁ¿£¬µ«
Êdzý·ÇÄãÖªµÀËüÃǶ¼ÊÇЩʲô(²¢ÇÒÏë¸úÉÏDjango±¾ÉíµÄ¸ü¸Ä)£¬×îºÃÔ¶ÀëËüÃÇÒÔ·ÀDjango·Á°­ÄãµÄapp
3£¬²»ÒªÓÃеĶÔÏ󸲸Çrequest.session£¬²¢ÇÒ²»Òª·ÃÎÊ»òÕßÉèÖÃËüµÄÊôÐÔ£¬ÏñPython×ÖµäÒ»ÑùʹÓÃËü
ÈÃÎÒÃÇ¿´¿´Ò»Ð©¿ìËÙµÄÀý×Ó£¬¼òµ¥µÄÊÓͼÔÚÓû§Ìá½»Ò»¸öcommentºóÉèÖÃÒ»¸öhas_commented±äÁ¿ÎªTrue£¬Ëü²»ÈÃÒ»¸öÓû§
Ìá½»Ò»¸öcomment¶àÓÚÒ»´Î:
Java´úÂë ¸´ÖÆ´úÂë
  1. def post_comment(request, new_comment):   
  2.     if request.session.get('has_commented', False):   
  3.         return HttpResponse("You've already commented.")   
  4.     c = comments.Comment(comment=new_comment)   
  5.     c.save()   
  6.     request.session['has_commented'] = True   
  7.     return HttpResponse('Thanks for your comment!')  

¼òµ¥µÄÊÓͼÔÚÕ¾µãµÇ¼һ¸ö"³ÉÔ±":
Java´úÂë ¸´ÖÆ´úÂë
  1. def login(request):   
  2.     m = members.get_object(username__exact=request.POST['username'])   
  3.     if m.password == request.POST['password']:   
  4.         request.session['member_id'] = m.id   
  5.         return HttpResponse("You're logged in.")   
  6.     else:   
  7.         return HttpResponse("Your username and password didn't match.")  

Õâ¸öÀý×Ó¸ù¾ÝÉÏÃæµÄlogin()×¢ÏúÒ»¸ö³ÉÔ±:
Java´úÂë ¸´ÖÆ´úÂë
  1. def logout(request):   
  2.     try:   
  3.         del request.session['member_id']   
  4.     except KeyError:   
  5.         pass   
  6.     return HttpResponse("You're logged out.")  

×¢Ò⣬ʵ¼ùÖÐÕâÊǵǼÓû§µÄ¶ñÐĵķ½Ê½£¬ÏÂÃæÌÖÂÛµÄÈÏÖ¤¿ò¼ÜÒÔ¸ü½¡×³ºÍÓÐÓõķ½Ê½ÎªÄã´¦ÀíÕâЩ£¬ÕâЩÄÚÈÝÖ»ÊÇÌṩ
ÈÝÒ×Àí½âµÄÀý×Ó

ÉèÖòâÊÔcookies
ÉÏÃæÌáµ½£¬Äã²»ÄÜÒÀÀµÃ¿¸öä¯ÀÀÆ÷½ÓÊÜcookies£¬ËùÒÔ£¬ÎªÁË·½±ãÆð¼û£¬DjangoÌṩÁËÒ»¸ö¼òµ¥µÄ·½Ê½À´²âÊÔÓû§µÄä¯ÀÀÆ÷
ÊÇ·ñ½ÓÊÜcookies£¬ÄãÖ»ÐèÔÚÊÓͼÖе÷ÓÃrequest.session.set_test_cookie()²¢ÔÚºóÃæµÄÊÓͼÖмì²érequet.session.test
_cookie_worked()£¬¶ø²»ÊÇÔÚͬһ¸öÊÓͼÖе÷ÓÃ
ÓÉÓÚcookiesµÄ¹¤×÷·½Ê½£¬ÕâÑù±¿×¾µÄ·ÖÀëset_test_cookie()ºÍtest_cookie_worked()ºÜ±ØÒª£¬µ±ÄãÉèÖÃÒ»¸öcookie£¬Äã
ÊÂʵÉϲ»ÄÜ·Ö±æä¯ÀÀÆ÷ÊÇ·ñ½ÓÊÜËü£¬Ö±µ½ä¯ÀÀÆ÷ÏÂÒ»´ÎÇëÇó
Äã×Ô¼ºÊ¹ÓÃdelete_test_cookie()À´Çå³ý²âÊÔcookieÊÇÁ¼ºÃµÄʵ¼ù£¬ÔÚÄãÑéÖ¤²âÊÔcookie¹¤×÷ºó×öÕâ¼þÊÂ
ÕâÀïÊÇÒ»¸öµäÐ͵ÄʹÓÃÀý×Ó:
Java´úÂë ¸´ÖÆ´úÂë
  1. def login(request):   
  2.   
  3.     # If we submitted the form...   
  4.     if request.method == 'POST':   
  5.   
  6.         # Check that the test cookie worked (we set it below):   
  7.         if request.session.test_cookie_worked():   
  8.   
  9.             # The test cookie worked, so delete it.   
  10.             request.session.delete_test_cookie()   
  11.   
  12.             # In practice, we'd need some logic to check username/password   
  13.             # here, but since this is an example...   
  14.             return HttpResponse("You're logged in.")   
  15.   
  16.         # The test cookie failed, so display an error message. If this  
  17.         # was a real site we'd want to display a more friendly message.   
  18.         else:   
  19.             return HttpResponse("Please enable cookies and try again.")   
  20.   
  21.     # If we didn't post, send the test cookie along with the login form.   
  22.     request.session.set_test_cookie()   
  23.     return render_to_response('foo/login_form.html')  

×¢Ò⣬ÄÚ½¨µÄµÇ¼ºÍ×¢Ïú·½·¨ÎªÄã´¦ÀíÁËÕâЩ

ÔÚÊÓͼÍâʹÓÃsessions
ÄÚ²¿Ã¿¸ösessionÖ»ÊÇÔÚdjango.contrib.sessions.models¶¨ÒåµÄÆÕͨµÄDjangoÄ£ÐÍ£¬ÒòΪËüÊÇÒ»¸öÆÕͨģÐÍ£¬Äã¿ÉÒÔʹÓÃ
ÆÕͨµÄDjangoÊý¾Ý¿âAPI·ÃÎÊsessions:
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from django.contrib.sessions.models import Session   
  2. >>> s = Session.objects.get_object(pk='2b1189a188b44ad18c35e113ac6ceead')   
  3. >>> s.expire_date   
  4. datetime.datetime(2005820133512)  

Ä㽫ÐèÒªµ÷ÓÃget_decoded()À´µÃµ½×¼È·µÄsessionÊý¾Ý£¬ÕâÊDZØÐèµÄ£¬ÒòΪ×ֵ䴿´¢ÎªÒ»¸ö±àÂëµÄ¸ñʽ:
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> s.session_data   
  2. 'KGRwMQpTJ19hdXRoX3VzZXJfaWQnCnAyCkkxCnMuMTExY2ZjODI2Yj...'  
  3. >>> s.get_decoded()   
  4. {'user_id'42}  


µ±sessions±£´æÊ±
µ±sessionÐ޸ĺóDjangoĬÈÏÖ»±£´æµ½sessionÊý¾Ý¿â£¬¼´µ±ËüµÄ×ÖµäÖµ±»¸³Öµ»òɾ³ýʱ:
Java´úÂë ¸´ÖÆ´úÂë
  1. # Session is modified.   
  2. request.session['foo'] = 'bar'  
  3.   
  4. # Session is modified.   
  5. del request.session['foo']   
  6.   
  7. # Session is modified.   
  8. request.session['foo'] = {}   
  9.   
  10. # Gotcha: Session is NOT modified, because this alters   
  11. # request.session['foo'] instead of request.session.   
  12. request.session['foo']['bar'] = 'baz'  

ΪÁ˸ü¸ÄÕâ¸öĬÈϵÄÐÐΪ£¬ÐèÒªÉèÖÃSESSION_SAVE_EVERY_REQUESTÉèÖÃΪTrue£¬Èç¹ûSESSION_SAVE_EVERY_REQUESTΪTrue
Django½«ÔÚÿ¸öµ¥¶ÀµÄÇëÇó±£´æsessionµ½Êý¾Ý¿â£¬ÉèÖõ±ËüûÓиıäʱ
×¢ÒâÖ»Óе±session±»´´½¨»òÐÞ¸Äʱsession cookie²Å±»·¢ËÍ£¬Èç¹ûSESSION_SAVE_EVERY_REQUESTΪTrue£¬session
cookie½«¶Ôÿ´ÎÇëÇó·¢ËÍ
ͬÑù£¬session cookieµÄexpires²¿·ÖÔÚÿ´Îsession cookie·¢ËÍʱ¸üÐÂ

ä¯ÀÀÆ÷³¤¶ÈµÄsessionsÓë³Ö¾Ã»¯sessions
Äã¿ÉÄÜÒѾ­×¢Òâµ½Google·¢Ë͵Äcookie°üº¬expires=Sun, 17-Jan-2038 19:14:07 GMT; Cookies¿ÉÒÔ¿ÉÑ¡µÄ°üº¬Ò»¸ö¹ýÆÚ
ÈÕÆÚ£¬¸ÃÈÕÆÚ¸æËßä¯ÀÀÆ÷ʲôʱºòɾ³ýcookie£¬Èç¹ûÒ»¸öcookie²»°üº¬¹ýÆÚÖµ£¬ä¯ÀÀÆ÷½«ÔÚÓû§¹Ø±Õä¯ÀÀÆ÷´°¿Úʱ¹ýÆÚ
Äã¿ÉÒÔͨ¹ýSESSION_EXPIRE_AT_BROWSER_CLOSEÉèÖÃÀ´¿ØÖÆsession¿ò¼ÜÔÚÕâµãÉϵÄÐÐΪ
SESSION_EXPIRE_AT_BROWSER_CLOSEĬÈÏÉèÖÃΪFalse£¬ÕâÒâζ×Åsession cookies½«´æ´¢ÔÚÓû§µÄä¯ÀÀÆ÷ÖгÖÐø
SESSION_COOKIE_AGEÃë(ĬÈÏΪÁ½ÐÇÆÚ£¬¼´1209600Ãë)£¬Èç¹ûÄã²»ÏëÈËÃÇÿ´Î´ò¿ªä¯ÀÀÆ÷ʱ¶¼²»µÃ²»µÇ¼µÄ»°¿ÉÒÔʹÓÃËü
Èç¹ûSESSION_EXPIRE_AT_BROWSER_CLOSEÉèÖÃΪTrue£¬Django½«Ê¹ÓÃä¯ÀÀÆ÷³¤¶ÈµÄcookies

ÆäËüsessionÉèÖÃ
³ýÁËÒѾ­Ìáµ½µÄÉèÖ㬻¹ÓÐһЩÆäËüÓ°ÏìDjangoµÄsession¿ò¼ÜʹÓÃcookiesµÄÉèÖÃ:
Setting                    Default        Explanation
SESSION_COOKIE_DOMAIN      None           session cookiesʹÓõÄÓòÃû£¬ÉèÖÃËüΪһ¸ö×Ö·û´®£¬Èç".lawrence.com"
                                          À´Ê¹ÓÿçÓòÃûµÄcookies£¬»òÕßÉèÖÃNoneÀ´Ê¹Óñê×¼cookie
SESSION_COOKIE_NAME        "sessionid"    ʹÓÃsessions µÄcookieÃû£¬¿ÉÒÔÊÇÈÎÒâ×Ö·û´®
SESSION_COOKIE_SECURE      False          session cookieÊÇ·ñʹÓÃ"°²È«"cookie£¬Èç¹ûÉèÖÃΪTrue£¬cookie½«±»
                                          ±ê¼ÇΪ"°²È«"£¬ÕâÒâζ×Åä¯ÀÀÆ÷½«±£Ö¤cookieֻͨ¹ýHTTPS´«ËÍ
¼¼Êõϸ½Ú
³öÓÚºÃÆæ£¬ÕâÀïÓÐһЩ¹ØÓÚsession¿ò¼ÜÄÚ²¿¹¤×÷µÄ¼¼Êõ×¢½â:
1£¬session×Öµä½ÓÊÜÈÎÒâpickleable Python¶ÔÏ󣬲ο¼PythonÄÚ½¨µÄpickleÄ£¿éÎĵµµÃµ½¸ü¶à¹ØÓÚÕâÔõÑù¹¤×÷µÄÐÅÏ¢
2£¬SessionÊý¾Ý´æ´¢ÔÚÃûΪdjango_sessionµÄÊý¾Ý¿â±íÖÐ
3£¬SessionÊý¾ÝÊÇ"lazily":Èç¹ûÄã´Ó²»·ÃÎÊrequest.session£¬Django²»»á½Ó´¥ÄǸöÊý¾Ý¿â±í
4£¬DjangoÖ»ÔÚÐèҪʱ´«ËÍcookie£¬Èç¹ûÄã²»ÉèÖÃÈκÎsessionÊý¾Ý£¬Ëü½«²»»á·¢ËÍsession cookie(³ý·ÇSESSION_SAVE_
EVERY_REQUESTÉèÖÃΪTrue)
5£¬DjangoµÄsessions¿ò¼ÜÊÇÍêÕûµÄ£¬µ¥¶ÀµÄºÍ»ùÓÚcookieµÄ£¬Ëü²»ÏñÆäËü¹¤¾ß(PHP£¬JSP)Ò»ÑùÇóÖîÓÚ°Ñsession IDs·ÅÔÚ
URLsÖÐ
Èç¹ûÄãÈÔÈ»ºÜºÃÆæ£¬Ô´´úÂëÊǷdz£Ö±½ÓµÄ£¬Äã¿ÉÒԲ鿴django.contrib.sessions

Óû§ºÍÈÏÖ¤
ÏÖÔÚÎÒÃǽ«ä¯ÀÀÆ÷ºÍÕæÊµµÄÈËÁ¬½ÓÆðÀ´ÒѾ­Íê³ÉÁËÒ»°ë£¬SessionsÌṩÎÒÃÇÔÚ¶àä¯ÀÀÆ÷ÇëÇóÖ®¼ä´æ´¢Êý¾ÝµÄÒ»ÖÖ·½Ê½£¬µÚ
¶þ¸öÒòËØÊÇʹÓÃÕâЩsessionsÀ´ÈÃÓû§µÇ¼£¬µ±È»£¬ÎÒÃDz»ÄÜÖ»ÐÅÈÎÓû§Ëù˵µÄËûÃÇÊÇË­£¬ËùÒÔÎÒÃǽ«ÐèÒªÈÏÖ¤ËüÃÇ
×ÔÈ»£¬DjangoÌṩ¹¤¾ßÀ´´¦ÀíÕâ¸öͨ³£µÄÈÎÎñ(ÒÔ¼°Ðí¶àÆäËüµÄ)£¬DjangoµÄÓû§ÈÏ֤ϵͳ´¦ÀíÓû§£¬×飬ȨÏ޺ͻùÓÚ
cookieµÄÓû§sessions£¬Õâ¸öϵͳͨ³£³ÆÎª"ÈÏÖ¤/ÊÚȨ"ϵͳ£¬Õâ¸öÃû×Ö½âÊÍÁËÓû§Í¨³£·ÖÁ½¸ö²½Öè´¦Àí:
1£¬ÑéÖ¤(ÈÏÖ¤)Óû§ÊÇËýÐû³ÆµÄÈË(ͨ³£Í¨¹ý¶ÔÊý¾Ý¿â¼ì²éÓû§ÃûºÍÃÜÂë)
2£¬ÑéÖ¤Óû§ÊÚȨ´¦ÀíһЩ²Ù×÷(ͨ³£¼ì²éȨÏÞ±í)
×ñÑ­ÕâЩÐèÒª£¬DjangoµÄÈÏÖ¤/ÊÚȨϵͳÓÉһЩ²¿·Ö×é³É:
1£¬Users
2£¬Permissions:¶þÔª(yes/no)±ê¼ÇÀ´Ö¸Ê¾Óû§ÊÇ·ñ¿ÉÒÔ´¦ÀíijһÈÎÎñ
3£¬Groups:°Ñ±êÇ©ºÍȨÏÞ¸³Ó賬¹ýÒ»¸öÓû§µÄͨ³£µÄ·½Ê½
4£¬Messages:ÅÅÈë¶ÓÁкÍÏÔʾÓû§µÄϵͳÏûÏ¢µÄ¼òµ¥·½Ê½
5£¬Profiles:ÓÃ×Ô¶¨ÒåÓòÀ©Õ¹Óû§¶ÔÏóµÄ»úÖÆ
Èç¹ûÄãÒѾ­Ê¹ÓÃÁËadmin¹¤¾ß(µÚ6ÕÂ)£¬ÄãÒѾ­¿´µ½Ðí¶àÕâЩ¹¤¾ß£¬²¢ÇÒÈç¹ûÄãÔÚadminÖб༭ÁËÓû§»ò×éÄãÊÂʵÉÏÒѾ­ÔÚ
±à¼­ÈÏ֤ϵͳµÄÊý¾Ý¿â±í

°²×°
ÀàËÆÓÚsession¹¤¾ß£¬ÈÏÖ¤Ö§³ÖÔÚdjango.contribÖаó¶¨ÎªDjango³ÌÐò£¬ËüÐèÒª°²×°£¬ÏñsessionϵͳһÑùËüĬÈÏÒѾ­±»
°²×°£¬µ«ÊÇÈç¹ûÄãɾ³ýÁËËü£¬Ä㽫ÐèÒª×ñÑ­ÕâЩ²½ÖèÀ´°²×°Ëü:
1£¬È·ÈÏsession¿ò¼Ü°²×°ÁË(²Î¿¼ÉÏÃæµÄÄÚÈÝ)£¬¸ú×ÙÓû§ÏÔÈ»ÐèÒªcookies£¬²¢ÇÒ¹¹½¨ÔÚsession¿ò¼ÜÖ®ÉÏ
2£¬°Ñ'django.contrib.auth'·Åµ½ÄãµÄINSTALLED_APPSÉèÖÃÖв¢ÔËÐÐmanage.py syncdb
3£¬È·ÈÏ'django.contrib.auth.middleware.AuthenticationMiddleware'ÔÚÄãµÄMIDDLEWARE_CLASSESÉèÖÃÖУ¬²¢ÇÒËüÔÚ
SessionMiddlewareÖ®ºó
ÓµÓÐÁËÕâЩ°²×°£¬ÎÒÃÇÒѾ­¿ÉÒÔÔÚÊÓͼ·½·¨Öд¦ÀíÓû§£¬Ä㽫ÔÚÊÓͼÖÐʹÓÃÀ´·ÃÎÊÓû§µÄÖ÷Òª½Ó¿ÚÊÇrequest.user£¬ËüÊÇ
Ò»¸ö±íʾµ±Ç°µÇ¼µÄÓû§µÄ¶ÔÏó£¬Èç¹ûÓû§Ã»ÓеǼ£¬Ëü½«±»Ìæ´úΪһ¸öAnonymousUser¶ÔÏó(²Î¿¼ÏÂÃæ¸ü¶àϸ½Ú)
Äã¿ÉÒÔʹÓÃis_authenticated()·½·¨ºÜÇáËɵķֱæÓû§ÊÇ·ñµÇ¼:
Java´úÂë ¸´ÖÆ´úÂë
  1. if request.user.is_authenticated():   
  2.     # Do something for authenticated users.   
  3. else:   
  4.     # Do something for anonymous users.  


ʹÓÃÓû§
Ò»µ©ÄãÓµÓÐÒ»¸öÓû§--ͨ³£´Órequest.userµÃµ½£¬µ«Ò²¿ÉÄÜͨ¹ýÏÂÃæÌÖÂÛµÄÒ»¸öÆäËü·½·¨µÃµ½--ÄãÒѾ­µÃµ½¸Ã¶ÔÏóµÄһЩ
ÓòºÍ·½·¨£¬AnonymousUser¶ÔÏó·ÂЧÆäÖÐһЩÓòºÍ·½·¨£¬µ«ÊDz»È«£¬ËùÒÔÄãÓ¦¸ÃÔÚÄãÈ·ÈÏ´¦ÀíµÄÊÇÕæÊµµÄÓû§¶ÔÏó֮ǰһ
Ö±¼ì²éuser.is_authenticated()
User¶ÔÏóµÄÓò
Field            Description
username         ±ØÐèµÄ£¬30¸ö×Ö·û»ò¸üÉÙ£¬Ö»ÔÊÐíÎÄ×ÖºÍÊý×Ö×Ö·û(×Öĸ£¬Êý×ÖºÍÏ»®Ïß)
first_name       ¿ÉÑ¡£¬30¸ö×Ö·û»ò¸üÉÙ
last_name        ¿ÉÑ¡£¬30¸ö×Ö·û»ò¸üÉÙ
email            ¿ÉÑ¡£¬E-mailµØÖ·
password         ±ØÐèµÄ£¬¹þÏ£µÄÔªÊý¾ÝÃØÃÜ(Django²»´æ´¢Ô­Ê¼ÃÜÂë)£¬²Î¿´ÏÂÃæµÄ"ÃÜÂë"²¿·ÖµÃµ½¸ü¶à¹ØÓÚÕâ¸öÖµ
is_staff         ²¼¶ûÖµ£¬Ö¸Ê¾Óû§ÊÇ·ñ¿ÉÒÔ·ÃÎÊadminÕ¾µã
is_active        ²¼¶ûÖµ£¬Ö¸Ê¾Óû§ÊÇ·ñ¿ÉÒԵǼ£¬°ÑÕâ¸ö±ê¼ÇÉèÖÃΪFalse¶ø²»ÊÇɾ³ýÓû§
is_superuser     ²¼¶ûÖµ£¬Ö¸Ê¾Óû§ÊÇ·ñÓµÓÐËùÓеÄȨÏÞ¶ø²»ÓÃÏÔʾµÄ¸³ÓèËüÃÇ
last_login       Óû§×îºóµÇ¼µÄdatetime£¬Ä¬ÈÏÉèÖÃΪµ±Ç°date/time
date_joined      µ±Óû§´´½¨Ê±µÄdatetime£¬µ±Óû§´´½¨Ê±Ä¬ÈÏÉèÖÃΪµ±Ç°date/time
User¶ÔÏóµÄ·½·¨
Method                   Description
is_authenticated()       ¶Ô"ÕæÊµµÄ"User¶ÔÏóÒ»Ö±·µ»ØTrue£¬ÕâÊÇ·Ö±æÓû§ÊÇ·ñÈÏÖ¤µÄ·½Ê½£¬Ëü²»°µÊ¾ÈκÎȨÏÞ£¬²¢ÇÒ
                         ²»¼ì²éÓû§ÊÇ·ñactive£¬ËüָֻʾÓû§³É¹¦ÈÏÖ¤
is_anonymous()           Ö»¶ÔAnonymousUser¶ÔÏó·µ»ØTrue(¶Ô"ÕæÊµ"User¶ÔÏó·µ»ØFalse)£¬Í¨³£ÄãÓ¦¸ÃÑ¡ÔñʹÓÃ
                         is_authenticated()·½·¨¶ø²»ÊÇÕâ¸ö·½·¨
get_full_name()          ·µ»Øfirst_name¼ÓÉÏlast_name£¬Ê¹ÓÃÒ»¸ö¿Õ¸ñ¼ä¸ô
set_password(passwd)     ÉèÖÃÓû§µÄÃÜÂëΪ¸ø¶¨µÄԭʼÃÜÂ룬Ëü»á´¦ÀíÃÜÂë¹þÏ££¬ÕâÊÂʵÉϲ»»á±£´æUser¶ÔÏó
check_password(passwd)   Èç¹û¸ø¶¨µÄԭʼÃÜÂëÊǸÃÓû§µÄÕýÈ·µÄÃÜÂëÔò·µ»ØTrue£¬Õâ»áÔڱȽÏʱ´¦ÀíÃÜÂë¹þÏ£
get_group_permissions()  ´ÓÓû§ËùÊôµÄ×é·µ»ØÓû§ÓµÓеÄȨÏÞ×Ö·û´®µÄÁбí
get_all_permissions()    ´ÓÓû§ËùÊôµÄ×éºÍÓû§µÄȨÏÞ·µ»ØÓû§ÓµÓеÄȫϢ×Ö·û´®µÄÁбí
has_perm(perm)           Èç¹ûÓû§ÓµÓиÃÌØÊâȨÏÞÔò·µ»ØTrue£¬permµÄ¸ñʽΪ"package.codename"£¬Èç¹ûÓû§inactive
                         ¸Ã·½·¨½«Ò»Ö±·µ»ØFalse
has_perms(perm_list)     Èç¹ûÓû§ÓµÓÐÕâÐ©ÌØÊâȨÏÞÔò·µ»ØTrue£¬Èç¹ûÓû§Îªinactive£¬¸Ã·½·¨½«Ò»Ö±·µ»ØFalse
has_module_perms(appname)Èç¹ûÓû§ÓµÓиø¶¨appnameµÄÈÎһȨÏÞÔò·µ»ØTrue£¬Èç¹ûÓû§inactiveÔòÒ»Ö±·µ»ØFalse
get_and_delete_messages()·µ»ØÓû§µÄ¶ÓÁÐÖеÄMessage¶ÔÏóÁÐ±í²¢´Ó¶ÓÁÐÖÐɾ³ýÏûÏ¢
email_user(subj, msg)    ·¢ËÍÒ»¸öe-mail¸øÓû§£¬Õâ¸öemail´ÓDEFAULT_FROM_EMAILÉèÖ÷¢ËÍ£¬ÄãÒ²¿ÉÒÔ´«µÝµÚ3¸ö²ÎÊý
                         from_emailÀ´¸²¸ÇemailµÄ·¢Ë͵ØÖ·
get_profile()            ·µ»ØÕ¾µãÌØÓеÄÓû§µÄÂÖÀª£¬²Î¿¼ÏÂÃæµÄÂÖÀª²¿·ÖµÃµ½¸ü¶à¹ØÓÚ´Ë·½·¨
×îºó£¬User¶ÔÏóÓÉÁ½¸ö¶à¶Ô¶àÓò£¬groupsºÍpermissions£¬User¶ÔÏó¿ÉÒÔÏñÆäËü¶à¶Ô¶àÓòÒ»Ñù·ÃÎÊËüÃÇÏà¹ØµÄ¶ÔÏó:
Java´úÂë ¸´ÖÆ´úÂë
  1. # Set a users groups:   
  2. myuser.groups = group_list   
  3.   
  4. # Add a user to some groups:   
  5. myuser.groups.add(group1, group2,...)   
  6.   
  7. # Remove a user from some groups:   
  8. myuser.groups.remove(group1, group2,...)   
  9.   
  10. # Remove a user from all groups:   
  11. myuser.groups.clear()   
  12.   
  13. # Permissions work the same way   
  14. myuser.permissions = permission_list   
  15. myuser.permissions.add(permission1, permission2, ...)   
  16. myuser.permissions.remove(permission1, permission2, ...)   
  17. myuser.permissions.clear()  


µÇ¼ºÍ×¢Ïú
DjangoÌṩÄÚ½¨µÄÊÓͼ·½·¨À´´¦ÀíµÇ¼ºÍ×¢Ïú(ÒÔ¼°Ò»Ð©ÆäËüµÄºÃ¼¼ÇÉ)£¬µ«ÏÖÔÚÏÈÈÃÎÒÃÇ¿´¿´ÔõÑù"ÊÖ¶¯"µÇ¼ºÍ×¢ÏúÓû§
DjangoÔÚdjango.contrib.authÖÐÌṩÁ½¸ö·½·¨À´´¦ÀíÕâЩ¶¯×÷:authenticate()ºÍlogin()
ʹÓÃauthenticate()À´ÈÏÖ¤¸ø¶¨µÄÓû§ÃûºÍÃÜÂ룬ËüÓÐÁ½¸ö¹Ø¼ü×Ö²ÎÊý£¬usernameºÍpassword£¬²¢ÇÒÈç¹ûÃÜÂëÊǺϷ¨µÄÔò
Ëü·µ»ØÒ»¸öUser¶ÔÏó£¬Èç¹ûÃÜÂë²»ºÏ·¨£¬authenticate()·µ»ØNone:
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from django.contrib import auth authenticate   
  2. >>> user = auth.authenticate(username='john', password='secret')   
  3. >>> if user is not None:   
  4. ...     print "Correct!"  
  5. ... else:   
  6. ...     print "Oops, that's wrong!"  
  7. Oops, that's wrong!  

ÔÚÊÓͼÖÐʹÓÃlogin()À´µÇ¼Óû§£¬ËüʹÓÃÒ»¸öHttpRequest¶ÔÏóºÍÒ»¸öUser¶ÔÏó²¢Ê¹ÓÃDjangoµÄsession¿ò¼ÜÔÚsessionÖÐ
±£´æÓû§µÄID
Õâ¸öÀý×ÓչʾÁËÄãÔõÑùÔÚÊÓͼ·½·¨ÖÐʹÓÃauthenticate()ºÍlogin():
Java´úÂë ¸´ÖÆ´úÂë
  1. from django.contrib import auth   
  2.   
  3. def login(request):   
  4.     username = request.POST['username']   
  5.     password = request.POST['password']   
  6.     user = auth.authenticate(username=username, password=password)   
  7.     if user is not None and user.is_active:   
  8.         # Correct password, and the user is marked "active"  
  9.         auth.login(request, user)   
  10.         # Redirect to a success page.   
  11.         return HttpResponseRedirect("/account/loggedin/")   
  12.     else:   
  13.         # Show an error page   
  14.         return HttpResponseRedirect("/account/invalid/")  

ÔÚÄãµÄÊÓͼÖÐʹÓÃdjango.contrib.auth.logout()À´×¢ÏúµÇ¼µÄÓû§£¬ËüʹÓÃÒ»¸öHttpRequest¶ÔÏó²¢ÇÒûÓзµ»ØÖµ:
Java´úÂë ¸´ÖÆ´úÂë
  1. from django.contrib import auth   
  2.   
  3. def logout(request):   
  4.     auth.logout(request)   
  5.     # Redirect to a success page.   
  6.     return HttpResponseRedirect("/account/loggedout/")  

×¢ÒâÈç¹ûÓû§Ã»ÓеǼµÄ»°logout()²»»áÅ׳öÈκÎÒì³£
¼òµ¥·½Ê½µÄµÇ¼ºÍ×¢Ïú
ʵ¼ùÖУ¬Äãͨ³£²»ÐèҪдÄã×Ô¼ºµÄµÇ¼/×¢Ïú·½·¨£¬authϵͳ´øÓÐÒ»Ì×ÊÓͼÀ´´¦ÀíµÇ¼ºÍ×¢Ïú
ʹÓÃÈÏÖ¤ÊÓͼµÄµÚÒ»²½ÊÇÐÞ¸ÄÄãµÄURLÅäÖã¬Ä㽫ÐèÒªÌí¼ÓÕâЩÄÚÈÝ:
Java´úÂë ¸´ÖÆ´úÂë
  1. from django.contrib.auth.views import login, logout   
  2.   
  3. urlpatterns = patterns('',   
  4.     # existing patterns here...   
  5.     (r'^accounts/login/$',  login)   
  6.     (r'^accounts/logout/$', logout)   
  7. )  

/accounts/login/ºÍ/accounts/logout/ÊÇDjangoĬÈÏΪÕâЩÊÓͼʹÓõÄURLs£¬µ«ÊÇÄã×ö³öÒ»µãŬÁ¦¾Í¿ÉÒÔ°ÑËüÃÇ·ÅÔÚÈÎ
ºÎÄãÏëÒªµÄλÖã¬loginÊÓͼĬÈÏäÖȾregistration/login.htmlÊÓͼ(Äã¿ÉÒÔͨ¹ý´«µÝÒ»¸ö¶îÍâµÄÊÓͼ²ÎÊýtemplate_na
me¸ü¸ÄÕâ¸öÄ£°åÃû)£¬Õâ¸ö±íµ¥ÐèÒª°üº¬Ò»¸öÓû§ÃûºÍÃÜÂëÓò£¬Ò»¸ö¼òµ¥µÄÄ£°å¿ÉÄÜ¿´ÆðÀ´ÏñÕâÑù:
Java´úÂë ¸´ÖÆ´úÂë
  1. {% extends "base.html" %}   
  2.   
  3. {% block content %}   
  4.   
  5.   {% if form.errors %}   
  6.     <p class="error">Sorry, that's not a valid username or password</p>   
  7.   {% endif %}   
  8.   
  9.   <form action='.' method='post'>   
  10.     <label for="username">User name:</label>   
  11.     <input type="text" name="username" value="" id="username">   
  12.     <label for="password">Password:</label>   
  13.     <input type="password" name="password" value="" id="password">   
  14.   
  15.     <input type="submit" value="login" />   
  16.     <input type="hidden" name="next" value="{{ next }}" />   
  17.   <form action='.' method='post'>   
  18.   
  19. {% endblock %}  

Èç¹ûÓû§³É¹¦µÇ¼£¬Ëý½«Ä¬Èϱ»Öض¨Ïòµ½/accounts/profile/£¬Äã¿ÉÒÔͨ¹ýÌṩһ¸ö½ÐnextµÄÔڵǼ֮ºóÖØ¶¨ÏòµÄURLÖµ
µÄhiddenÓòÀ´¸²¸ÇËü£¬ÄãÒ²¿ÉÒÔʹÓÃGET²ÎÊý´«µÝÕâ¸öÖµµ½loginÊÓͼ£¬Ëü½«×÷Ϊ½ÐnextµÄ±äÁ¿±»×Ô¶¯Ìí¼Óµ½contextÖÐ
×¢ÏúÊÓͼ¹¤×÷ÆðÀ´ÓÐÒ»µã²»Í¬£¬Ä¬ÈÏËüäÖȾregistration/logged_out.htmlÄ£°å(Ëüͨ³£°üº¬Ò»¸ö"ÄãÒѾ­³É¹¦×¢Ïú"µÄÐÅ
Ï¢)£¬¾¡¹ÜÈç´Ë£¬Äã¿ÉÒÔͨ¹ýÒ»¸ö¶îÍâ²ÎÊýnext_pageÀ´µ÷ÓÃÊÓͼ£¬Ëü½«¸æËßÊÓͼÔÚ×¢ÏúºóÖØ¶¨Ïò

ÏÞÖÆµÇ¼µÄÓû§·ÃÎÊ
µ±È»£¬ÎÒÃǾ­ÀúÕâЩÂé·³ÊÇΪÁËʹÎÒÃÇ¿ÉÒÔÏÞÖÆ·ÃÎÊÎÒÃÇÕ¾µãµÄÒ»²¿·Ö
×î¼òµ¥×îԭʼµÄÏÞÖÆ·ÃÎÊÒ³ÃæµÄ·½Ê½ÊǼì²érequest.user.is_authenticated()²¢Öض¨Ïòµ½µÇÂ¼Ò³Ãæ:
Java´úÂë ¸´ÖÆ´úÂë
  1. from django.http import HttpResponseRedirect   
  2.   
  3. def my_view(request):   
  4.     if not request.user.is_authenticated():   
  5.         return HttpResponseRedirect('/login/?next=%s' % request.path)   
  6.     # ...  

»òÕßÏÔʾһÌõ³ö´íÐÅÏ¢:
Java´úÂë ¸´ÖÆ´úÂë
  1. def my_view(request):   
  2.     if not request.user.is_au
    °²»ÕлªµçÄÔѧУרҵְҵ¹æ»®Ê¦ÎªÄãÌṩ¸ü¶à°ïÖú¡¾ÔÚÏß×Éѯ¡¿
Ö÷Õ¾Ö©Öë³ØÄ£°å£º 亚洲在线视频免费观看 | 97热在线观看 | a毛片免费观看 | 一区二区在线精品 | 国产成人啪午夜精品网站男同 | 91高清免费视频 | 成人av一区二区在线观看 | 国产区免费| 九九九伊在人线综合2023 | 国产日本欧美一区二区三区 | 一区二区三区四区五区中文字幕 | 国产成人精品亚洲男人的天堂 | 亚洲一区二区三区四区在线 | 国产成人一区在线 | 亚洲天堂一 | 新91视频网| 国产精品九九九九 | 天天操夜夜撸 | 国产在线首页 | 91免费看网站| 91亚洲夫妻 | 国产精品天堂网 | 偷拍成人一区亚洲欧美 | 亚洲成人av一区二区 | 午夜一区二区在线观看 | 国产精品女人久久久久久 | 国产欧美一区二区三区久久手机版 | 久久九九99| 在线观看免费亚洲 | 91免费电影| 嫩草影院发布页 | 99自拍网 | 色翁荡息又大又硬又粗又视频图片 | 午夜免费毛片 | 亚洲免费在线视频观看 | 91手机在线看片 | 中文字幕一区二区不卡 | 最新中文字幕一区 | 亚洲一区二区三区久久 | 亚洲精品天堂 | 91视频最新网站 |