我import views在Django项目中遇到了一个奇怪的问题.我不知道它是否是造成问题PyCharm的Django.所以PyCharm说它不能import views.py存档,但它在我运行服务器时起作用.
这是图片:
你知道问题出在哪里吗?
编辑:
根据Inlangers的回答,我试图改变导入vlado_web.translations import views,但没有帮助,而且,它提出
Exception Value:
No module named translations
当我在from translations import views那里,它正常工作,但PyCharm说它无法解决.
我坚持这个问题.我在这里和谷歌检查了很多建议但没办法摆脱这个错误.
好像Django不检查app/templates/*目录.它应该自动检查,不应该吗?
我的settings.py:
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'sekret-key-goes-here'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'chart_tools',
) …Run Code Online (Sandbox Code Playgroud) 是否可以使用具有相同属性的模型的另一个对象来创建对象?
就我而言,我有两个模型 -TemporaryJob和Job. 在TemporaryJob当用户填写表单创建。接下来要做的就是确认。如果他确认TemporaryJob,则该对象应转换为常规Job对象。
class Job(models.Model):
attributes
methods
class TemporaryJob(Job):
pass
Run Code Online (Sandbox Code Playgroud)
我试过了,Job.objects.create(temporary_job_instance)但它不起作用。
是否可以覆盖clean method由基于类的视图 - 生成的形式的a UpdateView?
在中form,我将覆盖clean方法来检查是否填充了第一字段或第二字段。
形式如下:
class MyForm(forms.ModelForm):
...
def clean(self):
super(MyForm,self).clean()
if bool(self.cleaned_data['first_field'])== bool(self.cleaned_data['first_field']):
raise ValidationError("Please, fill the first or second field")
Run Code Online (Sandbox Code Playgroud)
视图:
class EditOrderView(UpdateView):
model = Job
fields = ['language_from', 'language_to', 'level', 'short_description', 'notes',
'first_field', 'second_field']
template_name = 'auth/jobs/update-order.html'
def get_object(self, queryset=None):
return get_object_or_404(self.model, pk=self.kwargs["pk"], customer=self.request.user)
def get_success_url(self):
return '/my-orders/'
def form_valid(self, form):
self.order = form.save()
email.AdminNotifications.edited_order(self.order)
return HttpResponseRedirect(self.get_success_url())
Run Code Online (Sandbox Code Playgroud) 我想创建一个非常简单的中间件,只需在每个请求上打印"OK".问题是它会引发错误:
Traceback (most recent call last):
File "c:\python27\Lib\wsgiref\handlers.py", line 85, in run
self.result = application(self.environ, self.start_response)
File "C:\Users\Milano\Desktop\Projekty\venvs\sfl_venv\lib\site-packages\django\contrib\staticfiles\handlers.py", line 63, in __call__
return self.application(environ, start_response)
File "C:\Users\Milano\Desktop\Projekty\venvs\sfl_venv\lib\site-packages\django\core\handlers\wsgi.py", line 170, in __call__
self.load_middleware()
File "C:\Users\Milano\Desktop\Projekty\venvs\sfl_venv\lib\site-packages\django\core\handlers\base.py", line 52, in load_middleware
mw_instance = mw_class()
TypeError: __init__() takes exactly 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)
中间件类在 project/project/middleware.py
middleware.py
class UserHasProfileMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
print 'OK'
return response
Run Code Online (Sandbox Code Playgroud)
SETTINGS.PY
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', …Run Code Online (Sandbox Code Playgroud) 当一个字段发生变化时,我需要做一些动作.
由于此操作需要使用已保存的对象,我不能使用这样的pre_save信号:
@receiver(pre_save, sender=reservation_models.Reservation)
def generate_possible_pairs(sender, instance, **kwargs):
try:
reservation_old = sender.objects.get(pk=instance.pk)
except sender.DoesNotExist:
pass # Object is new, so field hasn't technically changed, but you may want to do something else here.
else:
if not reservation_old.datetime == instance.datetime: # Field has changed
do_something(instance) # It would be better to be sure instance has been saved
Run Code Online (Sandbox Code Playgroud)
是否有可能使用post_save信号?
我想避免为此模型添加临时属性.
我试图弄清楚如何使用从datetime提取的日期过滤QuerySet。
我使用了Django-filter并且如果不遍历非常无效的QuerySet就无法编写这样的查询。
我尝试了datetime__date__gte不起作用。
class MyReservationsFilter(FilterSet):
datetime__lte = DateFilter(method='datetime_filter',name='lte')
class Meta:
model = Reservation
fields = {'status': ['exact'],
# 'datetime': ['lte', 'gte'],
'destination_from': ['exact'],
'destination_to': ['exact'],}
def datetime_filter(self, queryset, name, value):
lookup = 'datetime__'+name
return queryset.filter(**{lookup:value})
Run Code Online (Sandbox Code Playgroud)
你知道该怎么办吗?
我不能使用,datetime__lte/gte因为:
我有一个Reservation对象r。
>> r.datetime
>> datetime.datetime(2017, 8, 31, 17, 55)
>> r.datetime.date()
>> datetime.date(2017, 8, 31)
Run Code Online (Sandbox Code Playgroud)
所以现在我尝试根据日期进行过滤:
Reservation.objects.filter(datetime__lte=datetime.date(2017, 8, 31),datetime__gte=datetime.date(2017, 8, 31))
>> []
Run Code Online (Sandbox Code Playgroud)
这是因为它不仅显示日期,而且显示时间。因此,我需要提取日期才能正确过滤。
我收到错误:
未捕获的类型错误:$.get 不是函数
如果jquery在加载此功能之前我没有导入,我会理解
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"
integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n"
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"
integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb"
crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"
integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn"
crossorigin="anonymous"></script>
<script>
window.loadCurrentLocation = function(){
$.get("{% url "locations:ajax_get_current_location" %}").done(function (data) {
{# TODO: Osetrit ak neexistuje#}
$('#id_my_current_location').text(data.name);
}
)
};
window.setUserLocation = function(){
var place_id = $('#id_this_place_id').val();
var name = $('#id_this_name').val();
$.get("{% url "locations:ajax_set_current_user_location" %}?place_id=" + place_id + "&name=" + name).done(function (data) {
loadCurrentLocation();
})
}
</script>
Run Code Online (Sandbox Code Playgroud)
你知道问题出在哪里吗?
我试图确保日志文件不会超过 1048576 字节。由于Scrapy使用pythonlogging模块,我试图将Scrapy的默认值更改FileHandler为RotatingFileHandler.
我在 Scrapy 文档或设置中找不到任何有关此内容的信息。我的想法是重写__init__()蜘蛛的方法(我有一只蜘蛛)。
def __init__(self, *a, **kw):
self.logger.logger.root.handlers[-1] = RotatingFileHandler('log.log',maxBytes=1024,backupCount=1)
super(MainSpider, self).__init__(*a, **kw)
Run Code Online (Sandbox Code Playgroud)
但是 scrapy 在蜘蛛初始化之前记录数据。
2017-10-26 13:16:15 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: engine_bot)
2017-10-26 13:16:15 [scrapy.utils.log] INFO: Overridden settings:
....
Run Code Online (Sandbox Code Playgroud)
有没有办法让这个工作或设置 Scrapy 默认日志文件的最大大小?
I don't understand, why is my model clean method called before full form validation.
I have required fields in my form. If I don't fill them, I don't get form errors, instead of, the model clean method is called (so I suppose it's because save is called).
It crashes in models clean() method:
if self.date_from > self.date_to
Run Code Online (Sandbox Code Playgroud)
can't compare datetime.date to NoneType
Because I didn't filled date_to field. I think that form should have handle it and raise ValidationError and …
django ×8
python ×6
datetime ×1
django-forms ×1
django-urls ×1
django-views ×1
forms ×1
import ×1
inheritance ×1
javascript ×1
jquery ×1
logging ×1
postgresql ×1
pycharm ×1
scrapy ×1
templates ×1