Django 一个简单的图书管理程序(五 通过查询添加借阅人)

本文介绍了如何在Django图书管理系统中改进借阅人添加方式,从手动填写转为从已有借阅人中选择。通过修改views.py、urls.py,创建searchback.html模板以及更新edit.html,实现了借阅人查询和选择的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前在图书管理中是通过手工填写来添加借阅人的,现在改为选择系统里已有的借阅人来添加。

具体操作如下:

1. 修改操作

在“library/book/views.py”中添加如下代码:

def searchback(request):
    
    readers = Reader.objects.order_by('name')
    paginator = Paginator(readers, 10)
    page = request.POST.get('pageNum', 1)
    try:
        if int(page) > paginator.num_pages:
            page = str(paginator.num_pages)
        readers = paginator.page(page)
    except (EmptyPage, InvalidPage):
        readers = paginator.page(paginator.num_pages)
    return render_to_response('book/searchback.html', {'readers':readers, 'currentPage':page, 'numPerPage':5 })

def searchbacksch(request):
    
    if 'q' in request.POST and request.POST['q']:
        q = request.POST['q']
        readers = Reader.objects.filter(name__icontains = q)
    else:
        readers = Reader.objects.order_by('name')
    paginator = Paginator(readers, 10)
    page = request.POST.get('pageNum', 1)
    try:
        if int(page) > paginator.num_pages:
            page = str(paginator.num_pages)
        readers = paginator.page(page)
    except (EmptyPage, InvalidPage):
        readers = paginator.page(paginator.num_pages)
    return render_to_response('book/searchback.html', {'readers':readers, 'currentPage':page, 'numPerPage':5})

修改“library/book/views.py”中“editBook()”的代码如下:

def editBook(request, id):
    
    book = get_object_or_404(Book, pk=int(id))  # 404:服务器找不到指定的资源
    if request.POST:
        book.name = request.POST.get('name', None)
        book.press = request.POST.get('press', None)
        book.author = request.POST.get('author', None)
        book.publicationTime = request.POST.get('publicationTime', None)
        account = request.POST.get('org.account', None)
        reader = Reader.objects.get(account__exact = account)
        book.reader = reader;
        book.save()
        return HttpResponse(simplejson.dumps({"statusCode":200, "navTabId":request.POST.get('navTabId', 'bookindex'), "callbackType":request.POST.get('callbackType', 'closeCurrent'), "message":u'编辑书本信息成功', "info":u'编辑书本信息成功'}), mimetype='application/json')
    return render_to_response('book/edit.html', {'book': book})

2. 修改“urls.py”

在“library/book/urls.py”的“patterns()”中添加代码:

    url(r'^searchback/$', 'book.views.searchback',name="books_searchback"),
    url(r'^searchbacksch/$', 'book.views.searchbacksch',name="books_searchbacksch"),

3. 添加借阅人查询界面

在“library/templates/book”下新建“searchback.html”,代码如下:

<form id="pagerForm" action="{% url books_searchback %}" method="post">
	<input type="hidden" name="pageNum" value="{{ currentPage }}" />
	<input type="hidden" name="numPerPage" value="{{ numPerPage }}" />
	<input type="hidden" name="account" value=""/>
</form>

<script type="text/javascript">
  	if(typeof(dwzinit)=='undefined') {
		self.location="/"
  	}
</script>

<div class="page">
<div class="pageHeader">
	<form rel="pagerForm" method="post" action="{% url books_searchbacksch %}" onsubmit="return dwzSearch(this, 'dialog');">
	<div class="searchBar">
		<ul class="searchContent">
			<li>
				<label>姓名:</label>
				<input type="text" name="q" />
			</li>	  
		</ul>
		<div class="subBar">
			<ul>
				<li><div class="buttonActive"><div class="buttonContent"><button type="submit">查询</button></div></div></li>
			</ul>
		</div>
	</div>
	</form>
</div>
<div class="pageContent">

	<table class="table" layoutH="118" targetType="dialog" width="100%">
		<thead>
			<tr>
				<th width="7%" align="center">序号</th>
				<th orderfield="account">账号</th>
				<th orderfield="name">姓名</th>
				<th orderfield="email">邮箱</th>
				<th orderfield="contact">联系方式</th>
				<th width="80" >查找带回</th>
			</tr>
		</thead>
		<tbody>
		   {% for reader in readers.object_list %}
           <tr>
           <td>{{ forloop.counter }}</td>
           <td>{{ reader.account }}</td>
           <td>{{ reader.name }}</td>
           <td>{{ reader.email }}</td>
           <td>{{ reader.contact }}</td>
           <td>
				<a class="btnSelect" href="javascript:$.bringBack({account:'{{ reader.account }}'})" title="查找带回">选择</a>
		   </td>
           </tr>
           {% endfor %}
		</tbody>
	</table>

	<div class="panelBar">
		<div class="pages">
			<span>共{{ readers.paginator.count }}条</span>
		</div>
		<div class="pagination" targetType="dialog" totalCount="{{ readers.paginator.count }}" numPerPage="{{ readers.paginator.per_page }}" pageNumShown="10" currentPage="{{ currentPage }}"></div>
	</div>
</div>
</div>
注意:“account”名称要统一。

4. 修改图书编辑界面

修改“library/templates/book/edit.html”,将原代码:

<div>
	<label>借阅人</label>
	<input type="text" class="required" size="30" name="reader" value="{{ book.reader.name}}"/>
</div>

替换为:

<dl class="nowrap">
	<dt>借阅人:</dt>
	<dd>
		<input size="30" id="reader" name="org.account" readonly="readonly" type="hidden" />
		<input size="30" name="org.account" type="text" readonly="readonly" value="{{ book.reader.account }}" lookupGroup="org" />
		<a class="btnLook" href="{% url books_searchback %}" target="dialog" mask="true" width="600" height="400" title="查找带回" lookupGroup="org">查找带回</a>
		<span class="info">(查询关联的设备)</span>
	</dd>
</dl>

5.运行

在图书管理页中,点击某一图书信息的“编辑”操作进入如图所示页面:


点击进入查询页,如下图所示:


在此页面可以直接翻页查找,也可以通过输入借阅人姓名“查询”。点击借阅人的选中借阅人。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值