记录软件工程课程项目开发时遇到的各种小问题(django)
1.python manage.py makemigrations 无效/无法检测出model的变化
在修改了models.py之后,我们想要更新数据库的表,使用了python manage.py makemigrations 命令之后,显示出"No changes detected",我们因此无法migrate这个数据库。
解决办法:
在makemigrations 后面增加APP的名字
比如说:
python manage.py makemigrations coder_market
这时就能检测出哪些表有变化了
2.无法使数据库在admin后台可视化
网上的方法大多是修改admin.py来修改,但是我使用这样的办法无效。发现将register的代码放到models.py时可以使用
from __future__ import unicode_literals
from django.contrib.auth.models import User
from django.db import models
from django.contrib import admin
'''
class user_login(models.Model):
username = models.CharField(max_length=30)
password = models.CharField(max_length=30)
identity = models.CharField(max_length=15)
'''
'''
class identity(models.Model):
username = models.ForeignKey(User)
iden = models.CharField(max_length=10)
'''
class publisher(models.Model):
username = models.CharField(max_length=30)
order_project = models.IntegerField()
presonal_information = models.CharField(max_length=100)
accept_information = models.TextField()
class receiver(models.Model):
username = models.CharField(max_length=30)
get_project = models.IntegerField()
presonal_information = models.CharField(max_length=100)
tag = models.CharField(max_length=50)
accept_information = models.TextField()
class manager(models.Model):
username = models.CharField(max_length=30)
manage_project = models.IntegerField()
presonal_information = models.CharField(max_length=100)
tag = models.CharField(max_length=50)
accept_information = models.TextField()
class project(models.Model):
number = models.IntegerField()
project_publisher = models.CharField(max_length=30)
project_content = models.TextField()
project_receiver = models.CharField(max_length=30)
project_manager = models.CharField(max_length=30)
tag = models.CharField(max_length=50)
class UserProfile(models.Model):
#user = models.ForeignKey(User, unique=True, verbose_name='profile')
user = models.OneToOneField(User, unique=True)
identity = models.CharField(max_length=15)
admin.site.register(publisher)
admin.site.register(receiver)
admin.site.register(project)
admin.site.register(UserProfile)
3.django无法使用login
遇到了一个登录失败的问题。
一个初始版本的login如下:
def login(request):
if request.method == "POST":
print request.POST['login_username'],request.POST['login_password']
user = django.contrib.auth.authenticate(username=request.POST['login_username'],
password=request.POST['login_password'])
if user is not None:
django.contrib.auth.login(request, user)
return HttpResponseRedirect('/hello')
else:
return HttpResponse('fail to login')
return render(request, 'login.html', {})
我发现在判断user是不是存在的时候就一直判断不存在,反复检查登录的代码,虽然初级,但是应该是正确的。最后发现问题存在于注册上
注册时,我们的代码如下
def register(request):
if request.method == 'POST':
reg = User()
reg.username = request.POST['register_username']
reg.password = request.POST['register_password'] #问题出在这一行
reg.save()
pro = UserProfile(user_id=reg.id)
pro.identity = request.POST['register_identity']
pro.save()
return HttpResponse("run!")
return render(request, 'register.html', {})
事实上问题出在密码的设置上,我们应该使用django内置的set_password
方法,即可解决问题。
reg.set_password(request.POST['register_username'])
4.在django的admin后台看到的各个表的值都是乱码
出现问题的原因是在model.py内的类没有加__unicode__()
方法,导致admin不知道拿哪一个字段来显示。改进的方法类似下面的代码
from __future__ import unicode_literals
from django.contrib import admin
from django.contrib.auth.models import User
from django.db import models
# Create your models here.
class publisher(models.Model):
username = models.CharField(max_length=30)
order_project = models.IntegerField()
presonal_information = models.CharField(max_length=100)
accept_information = models.TextField()
#下面这个方法加上
def __unicode__(self):
return self.username
5.无法提交HTML表单
解决方法:在HTML表单内加上{% csrf_token %}
<form method="post">{% csrf_token %}
<table>
后面省略
6.(1054, "Unknown column 'coder_market_project.status' in 'field list'")
问题可能是对数据库做了修改之后只进行了python manage.py makemigrations
没有做python manage.py migrate
我想问题可能是在django 的数据库抽象层做了改动之后,但是连接的数据库并没有改变表或者是字段,在增删改查的时候django在对应的数据库里找不到相应的数据
7.django数据库查询时不确定是否存在
可以用类似下面的方法。核心是DoesNotExist
异常
try:
p = User.objects.get(username='haha')
except User.DoesNotExist:
return HttpResponseRedirect('/hello')
记录软件工程课程项目开发时遇到的各种小问题(django)的更多相关文章
- Android 项目优化(六):项目开发时优化技巧总结
在之前我们讲了很多能够优化 Android 开发项目质量的方案,这些方案更多的是从一些比较专精的方向切入的,阐述的是一些比较重要且独立的优化方案. 本文我们将总结一下在日常开发过程中我们能够使用的一些 ...
- 使用Eclipse进行Javaweb项目开发时,如何设置外置浏览器Chrome
使用Eclipse开发Javaweb项目时,在Eclipse中显示页面不是很好,那么如何让它自动打开外置浏览器呢?操作如下
- vue项目开发时怎么解决跨域
vue项目中,前端与后台进行数据请求或者提交的时候,如果后台没有设置跨域,前端本地调试代码的时候就会报“No 'Access-Control-Allow-Origin' header is prese ...
- 【问题记录】web项目访问时出现404
请一定检查一下项目的Context root是否是你访问时使用的. Context root设置为/时,可以直接用ip+端口访问. Context root设置为项目名的,访问时请带上项目名. 设置方 ...
- iOS开发--Swift 最近项目开发中遇到的一些小问题与解决方法
1, Swift 修改导航栏颜色 self.navigationController?.navigationBar.barTintColor 2, Swift button 属性设置时直接进行初始化 ...
- 最近在用mvc3开发时遇到的一些小问题与解决方法....
问题一:控制器中的字符串如何显示在view的javascript中?例如ViewBag.str="1,2,3,4,5"; 解决办法:例如:<script type=" ...
- TMS320F28335项目开发记录1_CCS的使用介绍
CCS使用介绍 一.前言 本系列文章记录本人实际项目开发时对ti的DSP28335,以及CCS开发环境等的学习与记录,相对于2812来说,28335的资料还是比較少的,只是原理是相通的,28335说白 ...
- react项目开发中遇到的问题
前言 作为一个前端爱好者来说,都想在react上一试生手,那么在搭建react项目开发时,肯定会有这样或者那样的问题,尤其是对初学者来说,下面就个人在开发过程中遇到的问题总结一下,好在有google帮 ...
- 如何实现从Java入门到服务端项目开发的进阶?
对于打算入门或者刚刚入门学习Java的人来说,刚开始接触这门学科,往往会觉得不知所措,也会觉得很迷茫.结合前人经验,就从入门到进阶对于Java的学习而言,应该对于学习时间.目标和内容规划有一个清晰的定 ...
随机推荐
- [APUE]UNIX进程的环境(上)
一. 前言 本章将学习:当执行程序时,其main函数是如何被调用的,命令行参数是如何传送给执行程序的,典型的存储器布局是什么样式,如何分配另外的存储空间,进程如何使用环境变量,进程终止的不同方式等.另 ...
- js:给定两个数组,如何判断他们的相对应下标的元素类型是一样的
题目: 给Array对象原型上添加一个sameStructureAs方法,该方法接收一个任意类型的参数,要求返回当前数组与传入参数数组(假定是)相对应下标的元素类型是否一致. 假设已经写好了Array ...
- 【知识必备】RxJava+Retrofit二次封装最佳结合体验,打造懒人封装框架~
一.写在前面 相信各位看官对retrofit和rxjava已经耳熟能详了,最近一直在学习retrofit+rxjava的各种封装姿势,也结合自己的理解,一步一步的做起来. 骚年,如果你还没有掌握ret ...
- WPF 普通属性变化通知
问题描述:使用ObservableCollection<OrderItem> source 给Datagrid.ItemsSource赋值,在后台更新source集合后,前台Datagri ...
- java统计字符串单词的个数
在一些项目中可能需要对一段字符串中的单词进行统计,我在这里写了一个简单的demo,有需要的同学可以拿去看一下. 本人没怎么写个播客,如果有啥说的不对的地方,你来打我啊 不说废话了直接贴代码: 实现代码 ...
- 关于DDD的学习资料汇总
DDD(Domain-Driven Design)领域驱动设计,第一次看到DDD是在学习ABP时,在其中的介绍中看到的.what,DDD是个什么鬼,我不是小白,是大白,没听过.于是乎,度娘查查查,找到 ...
- 打破陈规抓痛点,H3 BPM10.0挑战不可能
高效益意味着相似的运营活动比竞争对手做得更好,而战略定位则意味着企业在运营活动中有区别于竞争对手的实施方式,即差异化竞争.在新经济体下,面对社会的变革.市场的竞争环境.不断攀升的成本压力,几乎没有企业 ...
- 《Walking the callstack(转载)》
本文转载自:https://www.codeproject.com/articles/11132/walking-the-callstack Download demo project with so ...
- win7,Mindmanager2012使用模板时弹出Runtime error R6025解决方法
Mindjet.MindManager2012.v10.0在应用个别模板时提示"参数错误",然后自动关闭. 解决办法: 如果是win7系统,可以进入C:\Users\(用户名)\A ...
- ABP源码分析二:ABP中配置的注册和初始化
一般来说,ASP.NET Web应用程序的第一个执行的方法是Global.asax下定义的Start方法.执行这个方法前HttpApplication 实例必须存在,也就是说其构造函数的执行必然是完成 ...