В C #define
гораздо популярнее. Вы можете использовать эти значения для объявления размеров массивов, например:
#define MAXLEN 5
void foo(void) {
int bar[MAXLEN];
}
ANSI C не позволяет вам использовать static const
в этом контексте, насколько я знаю. В C ++ вы должны избегать макросов в этих случаях. Вы можете написать
const int maxlen = 5;
void foo() {
int bar[maxlen];
}
и даже пропустить static
, поскольку внутренняя связь уже подразумевается const
[только в C ++].
Хорошо, это намного сложнее, чем я думал. Во-первых, начните с http://docs.djangoproject.com/en/dev/howto/auth-remote-user/ , но вам нужно будет расширить его с помощью собственной серверной части и пользователя.
from django.contrib.auth.backends import RemoteUserBackend
class MyRemoteUserBackend (RemoteUserBackend):
# Create a User object if not already in the database?
create_unknown_user = False
def get_user (self, user_id):
user = somehow_create_an_instance_of (MyUser, user_id)
return user
def authenticate (self, **credentials):
check_credentials ()
user = somehow_create_an_instance_of (MyUser, credentials)
return user
Затем пользователь:
from django.contrib.auth.models import User
class MyUser (User):
def save (self):
"""saving to DB disabled"""
pass
objects = None # we cannot really use this w/o local DB
username = "" # and all the other properties likewise.
# They're defined as model.CharField or similar,
# and we can't allow that
def get_group_permissions (self):
"""If you don't make your own permissions module,
the default also will use the DB. Throw it away"""
return [] # likewise with the other permission defs
def get_and_delete_messages (self):
"""Messages are stored in the DB. Darn!"""
return []
Уф! Django действительно не предназначен для использования без базы данных ...
grep
ping источник показал, что единственное место user. save ()
фактически вызывается (за исключением кода для создания пользователей и управления паролями, который вам вообще не нужно использовать): django.contrib.auth.login ()
, для обновления user.last_login
value.
# TODO: It would be nice to support different login methods, like signed cookies.
user.last_login = datetime.datetime.now()
user.save()
Если вы не хотите, чтобы пользовательские данные оставались в базе данных, попробуйте добавить фиктивный метод save ()
. Если я прав, это должно сработать.
def save(self, *args, **kwargs):
pass
Конечно, поскольку у вас вообще нет персистентности, вам следует подумать о кешировании результатов datasource.get
, иначе в худшем случае вы можете снова запросить данные и снова при каждом обращении пользователя, вошедшего в систему.
save ()
. Если я прав, это должно сработать.
def save(self, *args, **kwargs):
pass
Конечно, поскольку у вас вообще нет персистентности, вам следует подумать о кешировании результатов datasource.get
, иначе в худшем случае вы можете снова запросить данные и снова при каждом обращении пользователя, вошедшего в систему.
save ()
. Если я прав, это должно сработать.
def save(self, *args, **kwargs):
pass
Конечно, поскольку у вас вообще нет персистентности, вам следует подумать о кешировании результатов datasource.get
, иначе в худшем случае вы можете снова запросить данные и снова при каждом обращении пользователя, вошедшего в систему.