HTMLではないためhtmlとして表示されない挿入テキストを使用する代わりに(\r\nは「p」タグなどではありません)、マークダウンなどのフォーマット言語を使用できます(前述のとおり)。
それ以外の場合は、入力したテキストを手動で置換/解析する必要があります (マークダウンのような言語がこのために発明されているため、これは良い考えではないと思います)。
python-markdown2のように、マークダウン (データベースに保存するデータ) を html に変換するための優れた Python ライブラリがいくつかあります。
python-markdown リンクの例を参照してください。
>>> import markdown2
>>> markdown2.markdown("*boo!*") # or use `html = markdown_path(PATH)`
u'<p><em>boo!</em></p>\n'
>>> markdowner = Markdown()
>>> markdowner.convert("*boo!*")
u'<p><em>boo!</em></p>\n'
>>> markdowner.convert("**boom!**")
u'<p><strong>boom!</strong></p>\n'
これにより、マークダウン構文 (または使用する形式) を使用してコンテンツを入力することが強制されます。これを簡単にするために、マークダウンを作成するwysiwyg-editorを使用できます (Stackoverflow のエディターなど)。Stackoverflow はwmdを使用していると思いますが、他にも多くのマークダウン wysiwyg エディターがあります。
wmd の例:
<html>
<head>
<title>WMD Example using jquery</title>
<link rel="stylesheet" type="text/css" href="wmd.css"/>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="jquery.wmd.min.js"></script>
</head>
<body>
<h1>WMD Example using jquery</h1>
<div>
<textarea id="notes"/>
</div>
<script type="text/javascript">
$().ready(function() {
$("#notes").wmd();
});
</script>
</body>
</html>