標籤

ASP.NET MVC (29) Visual C# (15) JQuery (10) Plugins (8) JQuery Plugins (6) JavaScript (6) MySQL (5) CSS (4) LinQ (4) Mac OS (4) CentOS (3) Design Pattern (3) Entity Framework (3) IIS (3) Python (3) Windows (3) php (3) Docker (2) LAMP (2) SQL Server (2) WCF (2) .NET (1) .NET Core (1) AWS (1) Browser (1) GIS (1) IE (1) Internet Security (1) Linux (1) Platform (1) React (1) SEO (1) Testing (1) VMware (1) Windows 7 (1) cookie (1) curl (1) laravel (1) phpBB (1) session (1) 中古屋 (1) 透天 (1) 閒言閒語 (1) 面試 (1) 鳥松 (1)

2011年5月31日 星期二

[Python] Django中將單筆資料轉換為json格式


最基礎的使用方式:
from django.core import serializers data = serializers.serialize("json", SomeModel.objects.all())

可以指定僅序列化某些資料欄位(ex: name & size):
from django.core import serializers data = serializers.serialize('json', SomeModel.objects.all(), fields=('name','size'))

如果我們只要序列化單筆資料,直覺是:
from django.core import serializers data = serializers.serialize("json", SomeModel.objects.get(pk=id))
不過上述是錯的,原來官方文件有這麼一段話:
The arguments to the serialize function are the format to serialize the data to (see Serialization formats) and a QuerySet to serialize. (Actually, the second argument can be any iterator that yields Django objects, but it'll almost always be a QuerySet).

是低~ 所以我們要使用filter()而不是用get():
from django.core import serializers data = serializers.serialize("json", SomeModel.objects.filter(pk=id))






2011年5月27日 星期五

[Python] Django血淚史

我的環境為:Python2.5.4 + Django1.3 + SQLite3
----------
0.錯誤訊息Django Short names for ENGINE DeprecationWarning
Django1.3中
'ENGINE': 'sqlite3' 改為 'ENGINE': 'django.db.backends.sqlite3'


1.錯誤訊息 IndentationError:expected an indented block
通常是縮排問題

2.錯誤訊息 TypeError: __init__() got an unexpected keyword argument 'maxlength'
Django1.3改為max_length

4.pysqlite2._sqlite.OperationalError: unable to open database file
兩個原因:1.目錄沒有權限 2.資料庫路徑錯誤
1. 請把目錄改為有read/write權限
2. 如果是Local測試,可以使用相對目錄,否則用完整路徑。
------------------------------------------------------------
Django官方教學文件:https://docs.djangoproject.com/en/1.3/

*在shell中執行p.was_published_today()命令會出現錯誤"NameError: global name 'datetime' is not defined"
[解決方法]:
因為沒有import datetime,所以要在models.py中加入"from datetime import date"。
或者:
from django.db import models
import datetime

*沒有建立Django的SuperUser
[解決方法]:命令列輸入 "manage.py createsuperuser"

------[Django SOP]-----
1. 建立專案
django-admin.py startproject mysite

2. 編輯設定,資料庫類型與名稱(路徑)
settings.py

3. 同步資料庫,建立資料庫超級使用者
python manage.py syncdb

4. 建立應用程式
python manage.py startapp polls


6. Settings 中 INSTALLED_APPS區段中加入應用程式

7. 觀看與同步資料庫
python manage.py sql polls #look
python manage.py syncdb

8. 安裝管理者工具,在Settings 中 INSTALLED_APPS區段中加入django.contrib.admin,且url.py取消admin的註解 (要在同步一次資料庫)

9. 運行Server測試admin(此時只有基礎admin功能)

10. 在使用的apps資料夾中加入admin.py,內包含要編輯的資料表,之後重啟Server(新增code不用,新增檔案需要)
from polls.models import Poll 
from django.contrib import admin  
admin.site.register(Poll)










-----




Django 外來鍵引用方式: Poll 1-n Choice[ForeignKey(Poll)]
poll參照choice:Poll.objects.get(pk=id).choice_set.all()
choice參照poll:choice.poll.---




2011年5月24日 星期二

[Visual C#]使用XmlDocument讀取發生"System.Xml.XmlException,參考至未宣告的實體nbsp"問題

Reference to undeclared entity 'nbsp'

====================
System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();
xmldoc.LoadXml(newStr); //Exception

起因應該是【& nbsp;】 ,但是不曉得為什麼,只要把它換掉就好了

2011年5月9日 星期一

[ASP.NET MVC] 使用者被鎖定下不可以使用ResetPassword()重置密碼

如果使用者已經被鎖定時(Lock)使用Membership中的ResetPassword()重置密碼會發生下列錯誤:

=====================================================

'/' 應用程式中發生伺服器錯誤。

使用者帳戶已鎖定。

描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。

例外詳細資訊: System.Web.Security.MembershipPasswordException: 使用者帳戶已鎖定。

原始程式錯誤:

行 454:        private string ResetPWAndEmailToUserEmai(MembershipUser user) 行 455:        {                     行 456:            string newPW = user.ResetPassword(); //幫 行 457:            var message = new System.Net.Mail.MailMessage("xxxxxxxx@gmail.com", user.Email) 行 458:            {

原始程式檔: D:\0. My Program\Buddy\MvcBodyApp\MvcBodyApp\Controllers\AccountController.cs 行: 456
============================================

所以ResetPassword時還得先檢查


2011年5月4日 星期三

[JQuery Plugins] JQuery UI Dialog 中顯示換行 (
)

new line in JQUERY Dialog ( <br /> )
====
一般使用JQuery UI Dialog時設定文字會使用:
$("#dialog").text( "XXX" +"< br / >" + "開始:");


但是這樣<br />會變成HTML編碼,所以要使用:
$("#dialog").html( "XXX" + "< br / >" + "開始:");

很基礎的觀念~注意上面的< br / >為了顯示正常而多個空白,正確要使用<br />

[JavaScript] 將兩個由JQuery UI DateTimePicker產生的日期時間作判斷大小

Compare two DateTime from JQuery UI DateTimePicker using JavaScript.
====================================
程式碼如下:
//檢查時間有無符合後大於前-
    //日期格視為格式yyyy/MM/dd HH:mm
    function CheckTime() {
        string_1 = $('#StartDateTime').val();
        string_2 = $('#EndDateTime').val();
        DateTime1 = string_1.split(" "); //區分yyyy/MM/dd 與 HH:mm
        DateTime2 = string_2.split(" ");
        Date1 = DateTime1[0].split("/"); //區分yyyy ; MM ; dd
        Date2 = DateTime2[0].split("/");
        Time1 = DateTime1[1].split(":");   //區分HH ; mm
        Time2 = DateTime2[1].split(":");   //區分HH ; mm

        var TrueDate1 = new Date(Date1[0], (parseInt(Date1[1]) - 1).toString(), Date1[2], Time1[0], Time1[1], 0, 0);
        var TrueDate2 = new Date(Date2[0], (parseInt(Date2[1]) - 1).toString(), Date2[2], Time2[0], Time2[1],0,0);
        if (TrueDate1 <= TrueDate2) {
            return true;
        }
        return false;
    }


當然一定有更好的寫法,趕時間就先這樣用了~

Reference:
http://www.w3schools.com/js/js_obj_date.asp
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date


Javascript Date() constructor doesn't work.

[ASP.NET MVC] 驗證字串的最小值

MVC 2 驗證模型中有限制字串長度上限的DataAnnotations
[StringLength(4, ErrorMessage = "The ThumbnailPhotoFileName value cannot exceed 4 characters. ")]

如果想要實作驗證字串長度下限可以參考:
http://www.tsjensen.com/blog/CommentView,guid,904052d4-8ee0-47b5-bacb-eb1788137233.aspx

MSDN: StringLengthAttribute 類別




2011年5月3日 星期二

[SQL Server] 使用FileStream備份與還原

備份必須分兩個步驟 1. 備份資料庫  2.備份檔案與檔案群組 ,注意要開啟完整備份

還原也是分成兩個步驟 1. 還原資料庫 2.還原檔案與檔案群組


PS 似乎只要資料庫完整備份,還原的時候也會還原檔案群組的樣子
【C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2EXP\MSSQL\DATA】
======================================

[Plugins] SWFUpload在非IE瀏覽器下出現302 error的問題

應該是Session的問題,因為SWFUpload會新開一個Session,然後我們使用預設權限管理(Form Authorize)後就無法得到Session。

解釋:

解決方式(自己實作驗證機制):

注意如果某些狀況還是會出現302詢問客戶端是否支援cookie,可能是Web.config中沒有三個區段都設定為【cookieless="UseCookies"】